Web scraping 这样的一页怎么刮?

Web scraping 这样的一页怎么刮?,web-scraping,scrapy,Web Scraping,Scrapy,这只是一个示例页面。这个页面只发送很少的HTML,并且似乎以一种由客户端浏览器组合在一起的方式构建了大部分页面信息 Scrapy显然无法像浏览器那样看到任何东西。我想知道我怎么才能看到浏览器看到的东西 谢谢您的时间和建议。您尝试过硒或幻影之类的东西吗?这将允许您以可编程的方式运行web浏览器,然后Javascript/客户机部分将像手动浏览一样运行。例如,如果您只是将HTML和Javascript拉入Python的内存,Python无法像浏览器那样执行该Javascript,并且根据站点的不同

这只是一个示例页面。这个页面只发送很少的HTML,并且似乎以一种由客户端浏览器组合在一起的方式构建了大部分页面信息

Scrapy显然无法像浏览器那样看到任何东西。我想知道我怎么才能看到浏览器看到的东西


谢谢您的时间和建议。

您尝试过硒或幻影之类的东西吗?这将允许您以可编程的方式运行web浏览器,然后Javascript/客户机部分将像手动浏览一样运行。例如,如果您只是将HTML和Javascript拉入Python的内存,Python无法像浏览器那样执行该Javascript,并且根据站点的不同,99%的交互可能发生在该Javascript中

虽然转到“开发人员工具”或Firebug中的“网络”选项卡可能会提示您发出了哪些请求,但它可能并非始终是最佳解决方案。例如,一些站点发出几十个小AJAX请求以促进站点上的小交互(因为它们正在进行日志记录、分析、广告、实时通知等),并且请求url可能(有时故意)神秘或复杂。您可能无法了解每个URL和参数的实际作用,但您可能会意识到向下滚动一点并单击“下一步”箭头可以获得您希望显示在屏幕上的图片

一些网站还试图防止从非浏览器中进行抓取(试图限制对其数据的公然获取,并使其更多地面向人类使用)。它们将在客户端代码中嵌入一些“信标”,如果这些信标最终没有与您的其他请求关联,它们将阻止您的IP。几乎总会有办法解决这些问题,但这会让事情变得更加困难


其他事情,如cookies或HTML-5存储,也是一个额外的问题

您在这里遇到的问题称为AJAX。这基本上意味着javascript会在幕后下载一些东西。Scrapy Spider不执行javascript,所以您需要自己对这些调用进行反向工程

为此:
如果在您喜爱的浏览器检查器(即firebug)中打开
网络
选项卡
您会注意到,当您加载网站时,幕后的javascript会打开一些页面并下载一些内容。在这种情况下,此页面将从以下位置下载整个网站地图:

你可以在这里看到:

因此,此请求返回json内容,其中包含您要查找的几乎所有数据


更懒惰的选择是——让浏览器模拟器检索并执行javascript加载页面,然后将源代码传递给scrapy进行爬行。

这正是我所缺少的。谢谢。@DrewSSP不客气,我还对答案进行了编辑,添加了一些关于使用
splash
呈现javascript以供scrapy爬行的替代方法的信息。你被否决了,因为在提出问题之前,你应该先尝试一下,然后来这里询问什么不起作用。提供代码是问题的关键部分