我需要用python下载大约50个CSV文件。根据Google Chrome的网络统计数据,下载只需要0.1秒,而请求处理大约需要7秒。
我目前正在使用headless Chrome进行请求。我尝试了多线程,但据我所知,浏览器不支持多线程(在第一个请求完成处理之前,它不能发出另一个请求)。我不认为多处理是一种选择,因为这个脚本将被托管在虚拟服务器上。
我的下一个想法是使用requests模块,而不是无头的Chrome,但我在没有浏览器的情况下连接到公司网络时遇到了问题。然而,这会奏效吗?还有其他的解决方案吗?我可以在一个驱动程序上使用多个驱动程序实例或多个选项卡吗?谢谢!
下面是我的代码:
from Multiprocessing.pool import ThreadPool
driver=ChromeDriver()
Login(driver)
def getFile(item):
    driver.get(url.format(item))
updateSet=blah
pool= ThreadPool(len(updateSet))
for item in updateSet:
    pool.apply_async(getFile,(item,))
pool.close()
pool.join()发布于 2021-10-16 13:24:45
对于请求,可以尝试将user agent string设置为浏览器,例如: Mozilla/5.0 (X11;Linux x86_64) AppleWebKit/537.36 (KHTML,如Gecko) Chrome /51.0.2704.103Safari/537.36。
一些示例代码:
import requests
url = 'SOME URL'
headers = {
    'User-Agent': 'user agent here',
    'From': 'youremail@domain.com'  # This is another valid field
}
response = requests.get(url, headers=headers)https://stackoverflow.com/questions/69595887
复制相似问题