从大量URL中抓取信息

2024-09-27 17:40:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从这个网站上的powerplant中获取信息:https://www.marktstammdatenregister.de/MaStR/Einheit/Einheiten/OeffentlicheEinheitenuebersicht#stromerzeugung

对于每个ID,我需要访问它自己的页面并检索一些特定信息。由于一个链接中有4个选项卡(即URL#tab1、URL#tab2…),因此将创建200万个ID,总共创建800万个链接

如果我对每个ID进行循环操作,我的IP可能会被锁定。 有没有其他办法解决这个具体问题


Tags: httpsidurl网站链接wwwde页面
2条回答

Sahsahae强调了一些优点,如机器人、使用延迟等。然而,我还想强调用户代理和IP的使用

如果您从同一IP和UserAgent请求链接,某些网站/主机会有跟踪机制。如果您有一个VPN,您还可以在不同的IP之间切换,并中断您的抓取过程。但是,对于UserAgent部分,值得检查一下fake-useragent。代码块与requests库集成非常简单

通过这种方式,您并没有消除但至少减少了目标主机认为是同一个人发送请求的可能性。如果你真的不想被禁止,或者至少尽可能多地节省,那么延迟、用户代理和IP的组合可以帮助你

更新

我把它翻译成英语,在右边,有一个按钮,可以导出csv。。。只需下载该文件并使用任何可用的CSV解析器对其进行解析。我会保留原来的答案,因为它确实适用于没有这样的选择

原始答案

如果他们不提供任何API来方便访问数据,则很可能意味着他们并不真正关心或希望他人获得数据

他们没有robots.txt,所以从技术上讲,你可以免费浏览他们的整个网站,他们没有权利抱怨

最好的方法就是。。。试着刮一下。通常情况下,它们有速率限制,而不是实际的禁令,您可以在失败的请求上尽可能快地刮取,使用指数后退-第一次失败时,等待5秒再重试,第二次失败时,10秒再重试,第三次失败时,20秒。。。在第一次成功时,再次全速前进,并在再次失败时重复所有步骤

或者你可以一次慢慢地刮一整页,然后等一分钟,以此类推

如果我真的担心被无限期阻塞,我不会太担心需要多长时间,而是慢慢地刮

网站通常在专用服务器上运行,一个刮板每分钟发出数百个请求并不能真正降低其性能

相关问题 更多 >

    热门问题