Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从大量URL中抓取信息_Python_Python 3.x_Python Requests - Fatal编程技术网

Python 从大量URL中抓取信息

Python 从大量URL中抓取信息,python,python-3.x,python-requests,Python,Python 3.x,Python Requests,我需要从powerplant网站上获取以下信息: 对于每个ID,我需要访问它自己的页面并检索一些特定信息。由于一个链接中有4个选项卡(即URL#tab1、URL#tab2…),因此将创建200万个ID,总共创建800万个链接 如果我对每个ID进行循环操作,我的IP可能会被锁定。 是否有其他方法可以解决此特定问题?更新 我把它翻译成英语,在右边,有一个按钮,可以导出csv。。。只需下载该文件并使用任何可用的CSV解析器对其进行解析。我会保留原来的答案,因为它确实适用于没有这样的选择 原始答案 如果

我需要从powerplant网站上获取以下信息:

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

如果我对每个ID进行循环操作,我的IP可能会被锁定。 是否有其他方法可以解决此特定问题?

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


通过这种方式,您并没有消除但至少减少了目标主机认为是同一个人发送请求的可能性。延迟、用户代理和IP的组合可以帮助您,如果您真的不想被禁止,或者至少尽可能多地抓取。Sahsahae强调了一些优点,如机器人、使用延迟等。不过,我还想强调用户代理和IP的使用

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


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

您可以使用代理,或者您可以在请求之间添加延迟,希望他们不会抓到您。估计要抓取所有请求需要花费1.02秒的时间?在我的机器上,每个url需要1.02秒,所以8*1.02*1 000 000=8160000秒,假设一个IP 24/7运行,那么它需要大约90天的时间,如果你加上延迟,情况会更糟。假设我们增加5秒延迟,一个IP需要500天,如果并行运行,一个IP需要500天,100个代理需要5天。您注意到页面底部的导出表了吗?我建议您下载数据以确定是否需要删除此网站。您可以使用代理,也可以在请求之间添加延迟,希望他们不会抓到您任何时间估计删除所有请求?在我的机器上,每个url需要1.02秒,因此8*1.02*1000 000=8160000秒,因此,一个IP大约需要90天,假设它全天候运行,如果加上延迟,情况会更糟。假设我们增加5秒延迟,一个IP需要500天,如果并行运行,一个IP需要500天,100个代理需要5天。您注意到页面底部的导出表了吗?我建议下载数据,以确定是否需要删除此网站。csv文件仅包含一些信息,但