从网站抓取数据的问题

时间:2019-02-18 01:17:08

标签: java jsoup

我正在尝试通过使用Java与Jsoup抓取网页来收集数据。理想情况下,我想要大约8000行数据,但是我想知道当访问一个站点多次时的礼节是什么。对于每个代码,我的代码都必须导航到网站的不同部分,因此我必须加载8000个(或更多)网页。在每个请求之间放置延迟是一个好主意,这样我就不会使网站超载吗?据我所见,他们没有提供API。

此外,我尝试运行我的代码以无中断地仅获取80行数据,并且我的Internet断开了。运行该代码可能会导致它吗?当我给公司打电话时,自动消息使人感觉好像该地区没有服务,所以也许直到我尝试运行代码之前我才注意到它。感谢您的帮助,对于网络编码我还是很陌生。谢谢!

1 个答案:

答案 0 :(得分:0)

以下是您在使用Java和Jsoup编写超快速的Web爬虫时应该考虑的几件事以及我学到的东西:

  1. 最重要的方面是法律方面,网站是否允许爬网以及允许使用数据的程度。
  2. 放置延迟没问题,但最好添加与robots.txt兼容的自定义用户代理。通过将用户代理从默认更改为robots.txt,我发现响应时间显着增加。
  3. 如果网站允许,并且您需要抓取大量页面(这是我以前的项目之一允许的),则可以使用执行程序同时加载N个页面。它将使用单线程Java Web抓取器进行的数据收集工作的时间缩短为几分钟。
  4. 许多ISP的黑名单用户正在执行可编程的重复性任务,例如Web爬网和设置电子邮件服务器。它因ISP而异。我以前通过使用代理来避免这种情况。

在一个网站的每个请求响应时间为500毫秒的情况下,我的网络抓取程序能够在3分钟内通过100MBPS的连接从20万个具有50个线程,1000个代理的页面中抓取数据。

请求之间应该有延迟吗?

答案:这取决于网站是否允许您不断点击,然后您不需要它,但最好拥有它。每个请求之间有10毫秒的延迟。

我试图运行我的代码以立即获取80行数据,而我的互联网已断开?

答案:很有可能。 ISP可能假设您正在对该网站进行DOS攻击,并且可能暂时/永久地限制了您的连接。