Semalt评论:为乐趣和利润而进行的网络爬虫

您可以在不需要API的情况下进行抓取 。尽管网站所有者积极地停止抓取,但他们并不在乎API,而是更多地关注网站。许多站点不能充分防范自动访问的事实为刮板机留下了余地。一些简单的解决方法将帮助您收集所需的数据。

刮取入门

进行爬网需要了解所需数据的结构及其可访问性。首先从获取数据开始。查找返回您所需信息的URL。浏览网站并检查在浏览不同部分时URL的变化。

或者,在网站上搜索几个词,然后根据您的搜索词检查URL的变化。您应该看到一个像q =这样的GET参数,该参数在您每次搜索新词时都会改变。保留加载数据所需的GET参数,然后删除其他参数。

如何处理分页

分页使您无法一次访问所需的所有数据。当您单击第2页时,会将offset =参数添加到URL。这是页面上的元素数或页面数。在数据的每一页上递增此数字。

对于使用AJAX的网站,请在Firebug或Inspector中拉起“网络”标签。检查XHR请求,确定并集中处理那些可以获取数据的请求。

从页面标记获取数据

这是使用CSS钩子实现的。右键单击数据的特定部分。拉Firebug或Inspector并缩放DOM树,以获取包裹单个项目的最远<div>。从DOM树获得正确的节点后,请查看页面源代码以确保您的元素可以通过原始HTML进行访问。

为了成功地进行抓取,您需要一个HTML解析库,该库可以读取HTML并将其转换为可以迭代的对象,直到获得所需的对象为止。如果您的HTTP库要求您设置一些Cookie或标头,请在Web浏览器上浏览该站点并获取由浏览器发送的标头。将它们放入词典中,然后提出您的要求。

当您需要登录进行抓取时

如果必须创建一个帐户并登录才能获取所需的数据,则需要具有良好的HTTP库来处理登录。爬虫登录使您可以访问第三方站点。

如果您的Web服务的速率限制取决于IP地址,则将可将Web服务访问的代码设置为客户端Javascript。然后将结果从每个客户端转发回您的服务器。结果似乎来自许多地方,没有一个会超过其速率限制。

格式不正确的标记

一些标记可能难以验证。在这种情况下,请深入HTML解析器以进行容错设置。或者,将整个HTML文档视为长字符串并进行字符串拆分。

尽管您可以在网络上对网站上的所有数据进行爬网,但有些站点会使用软件停止爬网,而其他站点则禁止对网络进行爬网。这样的网站可以起诉您,甚至因收集其数据而被判入狱。因此,请谨慎对待所有网络爬虫,并安全进行。