html - 无法使用scrapy从farfetch抓取数据

标签 html css scrapy web-crawler

我想从farfetch.com获取价格信息使用 scrapy,但我只得到一个空列表。 这是来自 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"...> ,是这个原因吗?

最佳答案

在 scrapy shell 中使用你的例子

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 部分获取价格信息非常容易。

关于html - 无法使用scrapy从farfetch抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51375033/

相关文章:

html - Bootstrap CSS 堆叠文本

javascript - 禁用自动生成的选择标签中的双击

css - 如何设置不影响背景图片的边框

jquery - youtube 自定义标题的 Fancybox 无法正常显示

python - Scrapy 不会重新下载最近下载的图像

python - Scrapy:使用编码和 POST 作为 JSON 数组从多个元素中提取

html - 使用 bootstrap 或 css 将 2 个元素水平居中

javascript - jQuery 动画重叠问题

javascript - 带有 JavaScript 跨浏览器的 Webkit 背景过滤器

python - 如何重用Spider上的yield