对scrapy和Xpath感到困惑

时间:2017-12-11 19:01:26

标签: xpath scrapy

我正在尝试从以下网站获取一些数据: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()

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

1 个答案:

答案 0 :(得分:3)

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

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

Scrapy没有所有这些东西,当你做@echo off setlocal enabledelayedexpansion set "workspace=%ProgramFiles(x86)%" set "artifact_ids=online_deploy" for %%x in (%artifact_ids%) do ( echo using quotes: "%workspace%" echo escaping: %workspace:)=^)% echo delayed exp.: !workspace! ) 时你得到的东西只是第一个初始&#34;裸骨&#34;没有所有&#34;动态内容&#34;。

的HTML页面