我需要在以下网站上从动力装置中抓取信息:https://www.marktstammdatenregister.de/MaStR/Einheit/Einheiten/OeffentlicheEinheitenuebersicht#stromerzeugung
对于每个ID,我需要访问其自己的页面并检索一些特定信息。由于链接中有4个标签(即urls#tab1,urls#tab2 ...),因此将创建200万个ID,从而形成了800万个链接。
如果我通过每个ID手动进行循环操作,我的IP可能会被锁定。 还有其他方法可以解决此特定问题吗?
答案 0 :(得分:1)
我将其翻译为英语,然后在右侧,有一个按钮可以导出csv ...只需下载该文件,然后使用任何可用的CSV解析器对其进行解析。我将保留原始答案,因为在没有这样的选项时它确实适用。
如果他们未提供任何可轻松访问数据的API,则很可能意味着他们并不在乎或希望其他人获取数据。
他们没有robots.txt,因此从技术上讲,您可以自由抓取他们的整个网站,并且他们无权投诉。
最好的方法是...尝试将其刮下。通常,它们有速率限制,而不是实际的禁令,您可以尽可能快地抓取,然后对失败的请求进行处理,使用指数补偿-第一次失败时,请等待5秒钟再尝试,第二次失败时,等待10秒再尝试再次失败,一次20秒...第一次成功,再次全速刮擦,一旦再次失败,则重复所有操作。
或者您可以慢慢抓取-一次将整个页面全部抓取,然后等待一分钟,依此类推。
如果我真的很担心无限期地被封锁,我不会太担心会花多长时间然后慢慢刮一下。
网站经常不运行在专用服务器上,一个刮板每分钟发出数百个请求并不会真正影响其性能。
答案 1 :(得分:1)
Sahsahae强调了一些优点,例如机器人,使用延迟等。但是,我也想强调UserAgent和IP的用法。
如果您请求来自相同IP和UserAgent的链接,则某些网站/主机具有跟踪您的机制。如果您有VPN,也可以在不同的IP之间切换并中断抓取过程。但是,对于UserAgent部分,值得检查fake-useragent。该代码块非常易于与requests库集成。
这样,您并没有消除但至少减少了目标主机认为它是同一个人发送请求的可能性。如果您真的不希望被禁止,或者至少尽可能地抓取时间,则延迟,用户代理和IP的结合可以为您提供帮助。