0

问题是我无法抓取网站的一部分。如果我使用 Chrome 开发模式,我无法在 xpath 或选择器中复制正确的位置。

我会得到其他选项卡或 div 的正确路径,例如正文标题:body > div.header.home-header > div

而当我试图获取包含我想要的信息的选项卡时,我只得到:#htmlContent. 如果我手动编写它应该是:body > div.main.main-top.seach-boxstyle > div > div > div.recommend-product-wrap.produc-text > div > div.recommend-product,但返回一个空列表。

我正在考虑是否有人引用了整个会话,所以我不能刮,或者这是另一个问题。网址是中文的:http ://www.usewealth.com/Product/More.aspx?productDisplay=isArticle

我正在尝试帮助一家公司抓取自己的推荐掉期列表,而该列表并未以任何方式出现。

4

1 回答 1

1

问题是页面使用 JavaScript 动态呈现其内容。Scrapy 本身不运行 JavaScript,它只下载页面的 HTML 源,因此不存在动态内容。在这种情况下,基本上有两种选择。使用一些无头浏览器(例如 Selenium 或 Splash)渲染页面并让 Scrapy 解析渲染结果。根据我的经验,我建议使用 Splash,因为它更可靠,并且使用scrapy-splash库与 Scrapy 的集成是无缝的。

另一种选择是使用浏览器的开发人员工具来查看页面是否不使用 API 来获取数据(然后 JavaScript 在页面上呈现)。您尝试抓取的网站似乎就是这种情况。查看 Chrome 开发人员工具(网络选项卡,然后是 XHR 请求),我看到对此 URL 的 POST 请求:

http://www.usewealth.com/Action/ProductAJAX.ashx

它返回一个 JSON 响应,该响应似乎包含所有需要的数据,您可以使用标准json库对其进行解析。

于 2019-04-24T06:17:15.077 回答