bel*_*007 5 python twisted web-scraping
我想在一个站点批量下载网页.我的'urls.txt'文件中有5000000个网址链接.这大约是300M.如何使多线程链接这些网址并下载这些网页?或批量如何下载这些网页?
我的想法:
with open('urls.txt','r') as f:
for el in f:
##fetch these urls
Run Code Online (Sandbox Code Playgroud)
或扭曲?
它有一个很好的解决方案吗?
一次性下载 500 万个网页绝对不是一个好主意,因为您会耗尽很多东西,包括网络带宽和操作系统的文件描述符。我会分批去100-1000。您可以使用 urllib.urlopen 获取套接字,然后在多个线程上使用 read() 。您也许可以使用 select.select。如果是这样,则继续一次下载所有 1000 个文件,并将 select 返回的每个文件句柄分配给 10 个工作线程。如果 select 不起作用,则将批次限制为 100 次下载,并每次下载使用一个线程。当然,您不应启动超过 100 个线程,因为您的操作系统可能会崩溃,或者至少会变得有点慢。