【问题标题】:Scrapy scrape Apple siteScrapy 刮苹果网站
【发布时间】:2019-04-21 21:00:42
【问题描述】:

我试图从下面的链接中获取模型和价格,但没有运气,请告诉我哪里出了问题以及如何刮掉这两部分?

https://www.apple.com/shop/buy-ipad/ipad-pro

这是我尝试过的: 799 美元起

获取单词“来自”

response.xpath('//span[@class="as-price-currentprice"]/text()').extract()

[]


获取价格本身:

response.xpath('//span[@class="nowrap"]/text()').extract()

[u'1\u2011800\u2011MY\u2011APPLE.', u'1\u2011800\u2011MY\u2011APPLE.', u'Visit an ', u'call ', u', or ']


型号

顺便说一句,我根本无法获得模型

11 英寸 iPad Pro

12.9 英寸 iPad Pro

【问题讨论】:

    标签: python scrapy


    【解决方案1】:

    你可以这样做:

    headers = response.css('.pd-billboard-subheader::text').getall()
    prices = response.css('.pd-billboard-price::text').getall()
    
    result = []
    for header, price in zip(headers, prices):
        header_cleaned = header.replace('\xa0', ' ')
        price_cleaned = price.replace('\n', '').replace('        ', '').strip()
        result.append([header_cleaned, price_cleaned])
    

    在此之后,结果将等于:

    [['12.9-inch iPad Pro', 'From $999'],
     ['11-inch iPad Pro', 'From $799'],
     ['10.5-inch iPad Pro', 'From $649'],
     ['iPad', 'From $329'],
     ['iPad mini 4', 'From $399']]
    

    【讨论】:

    • 嗨 stasdeep,感谢您的快速提示,实际上您的代码运行良好,但我想知道我的代码有什么问题?我已经根据文档做到了,我的亚马逊蜘蛛工作正常,但在 apple.com 中我无法获得上述那个?
    • @mos 可能您的问题是您查看的不是响应本身,而是处理后的 HTML。如果上面的回答对你有帮助,请采纳:)
    【解决方案2】:

    查看网站返回的原始 HTML(右键单击 > 查看源代码)。

    如您所见,页面只是一个由一些 Javascript 代码动态呈现的模板。

    当您查看 Web 浏览器开发工具时,Javascript 已经执行,因此您会看到最终呈现的 HTML,因此请务必查看原始 HTML。

    【讨论】:

    • 如何查看原始 html ?因为通常我们右键单击页面上的元素并进行检查,以查看我们应该在 scrapy spider 中搜索什么。
    • 右击 > 检查不提供原始 HTML,它在 Javascript 执行后提供呈现的 HTML。您需要右键单击 > 查看源代码,或查看 > 查看源代码,具体取决于您的浏览器
    猜你喜欢
    • 2019-03-01
    • 2016-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 2014-07-16
    • 2015-02-18
    • 1970-01-01
    相关资源
    最近更新 更多