【问题标题】:Confused about scrapy and Xpath对scrapy和Xpath感到困惑
【发布时间】:2017-12-11 19:01:25
【问题描述】:

我正在尝试从以下网站抓取一些数据:https://xrpcharts.ripple.com/

我感兴趣的数据是Total XRP,您可以在圆图的正下方或侧面(取决于您的浏览器)看到它。所以我首先要做的是检查我感兴趣的元素。所以我看到它在 <div class="stat" inside span ng-bind="totalXRP | number:2" class="ng-binding">99,993,056,930.18</span> 内部。

号码99,993,056,930.18是我感兴趣的。

所以我从一个scrapy shell开始写:

fetch("https://xrpcharts.ripple.com")

然后我使用chrome通过右键单击HTML代码的那个位置来复制Xpath,chrome给我的结果是:

/html/body/div[5]/div[3]/div/div/div[2]/div[3]/ul/li[1]/div/span

然后我使用Xpath命令提取文本:

response.xpath('/html/body/div[5]/div[3]/div/div/div[2]/div[3]/ul/li[1]/div/span/text()').extract()

但这给了我一个空列表[]。我真的不明白我在这里做错了什么。我认为我犯了一个明显的错误,但我没有看到。提前致谢!

【问题讨论】:

    标签: xpath scrapy


    【解决方案1】:

    底线是:您不能期望您在浏览器中看到的页面与 Scrapy 将下载并可以使用的页面相同。 Scrapy 不是浏览器

    这个页面是非常动态和复杂的,它是在多个异步请求的帮助下构建的,同时引入了逻辑和数据。还有在浏览器中执行的 JavaScript,它在形成和支持 HTML 文档对象树方面发挥着重要作用。

    Scrapy 没有所有这些东西,当你做fetch() 时得到的只是第一个初始的“基本”HTML 页面,没有所有“动态内容”。

    【讨论】:

    • 为了扩展您的响应,您可以使用scrapy-splash在网站上渲染javascript并在scrapy中获得类似的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 2013-03-29
    • 2014-11-02
    相关资源
    最近更新 更多