无法使用scrapy从Farfetch抓取数据

时间:2018-07-17 06:56:47

标签: html css scrapy web-crawler

我希望使用scrapy从farfetch.com获取价格信息,但是我只得到一个空列表。 这是来自farfetch的html块:

<div class="bc2ed6" data-tstid="priceInfo-priceInfo" itemprop="offers" itemscope="" itemtype="http://schema.org/Offer">
  <span>
    <strong data-tstid="priceInfo-original" class="d9c839 _62e534">$1,190</strong>
    <small class="_840e33 eda00d" data-tstid="dutiesInformation" dir="LTR">(<!-- -->Import duties included<!-- -->)</small>
  </span>
  <meta itemprop="price" content="1190"><meta itemprop="priceCurrency" content="USD">
  <link itemprop="itemCondition" href="http://schema.org/NewCondition">
  <link itemprop="availability" href="http://schema.org/InStock">
</div>

然后我在scrapy shell中测试我的代码,它返回空直到有一些根标签:

>> response.css('main').css('section').css('div#slice-pdp').css('div.bc2ed6')
[]
>> response.css('main').css('section').css('div#slice-pdp')
[]
>> response.css('main').css('section').css('div#globalPos')
[<Selector xpath=u"descendant-or-self::div[@id = 'globalPos']" data=u'<div id="globalPos" class="info-banners-'>]
>> response.css('main').css('section')
[<Selector xpath=u'descendant-or-self::section' data=u'<section><!-- error message --><div id="'>]

有人知道它是为什么吗,我该如何解决?

Ps:<script>..<script><div id="globalPos"...>之间有<div id="slice-pdp"...>,这是原因吗?

1 个答案:

答案 0 :(得分:0)

在草皮外壳中使用示例时

scrapy shell file:///home/user/scrapy/so/so_51375033_part.html

我得到价格信息:

In [11]: response.css('div.bc2ed6').css('meta::attr(content)').extract()
Out[11]: ['1190', 'USD']

因此,当您能够访问bc2ed6时,从内部html部分获取价格信息就非常容易。