我正在搜索美国的技术手册,寻找任何与防洪和防洪事件有关的信息。我认为它们托管了大约40万个文件,我正在尝试编写代码来下载任何与我正在研究的内容相关的pdf文件。
我有的代码工作,它只需要2分钟的单个文件。一旦我让它工作得很好,我就会把它扔进一个循环,我想这会增加更多的时间。
import requests
import sys
import os
from pathlib import Path
import requests
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
url = 'https://apps.dtic.mil/dtic/tr/fulltext/u2/a125775.pdf'
response = requests.get(url, headers=headers)
result = response.text
result1 = result.find('{{vm.optionsDisplay(vm.model)}}" value="0')
if result1 == -1:
print("sucks to suck")
else:
with open("python.pdf","wb") as pdf:
for chunk in response.iter_content(chunk_size=1024):
if chunk:
pdf.write(chunk) 同样,代码也适用于此文件...但我想不出如何加快这一过程。
发布于 2019-08-23 05:32:57
如果linked file可以作为衡量标准的话,我认为这项任务的规模可能相当困难。
此文件大小为9.6MB,因此如果它是400,000个文件的准确表示,那么我们将下载并节省9.6*400,000=3,840,00MB (3.8 TB)
如果我们的下载速度达到1MB/s,这将需要1066小时(44天)。这是假设我们不受美国政府服务器的限制(如果他们看到我们的IP试图下载1TB+,他们可能会这样做)
还有一个有趣的哲学问题是,如果一台计算机需要44天将信息从数据库传输到它的内存中,我想知道一个人需要多长时间才能完成类似的过程。
在过去的20年左右,你可以尝试通过过滤文件来减少文件的数量。
https://stackoverflow.com/questions/57617045
复制相似问题