目前我有一个csv文件,其中包含大量链接(900+)以从中下载文件。我想要做的是从这个csv文件下载所有文件,但是为了下载我需要登录网站的文件,这是通过导航到感兴趣的网站上的特定页面并从那里登录来完成的。
我可以通过selenium设置一个登录会话,并使用重复的driver.get命令来启动下载,但这种趋势根据我的经验不起作用。
Wget是一个通过迭代文件中的链接来检索文件的选项,但它不会解决网站需要登录才能工作的问题。
所以简而言之,我的问题是,对于位于csv文件中的一系列下载链接进行迭代,从所述链接下载所有文件并使登录会话能够下载这些文件的最有效实现是什么?
编辑:目前正在使用请求进行测试
import requests
s = requests.Session()
print(s.cookies.get_dict())
s.get("URL of Landing page to generate cookies")
print(s.cookies.get_dict())
s.get("Login page URL")
答案 0 :(得分:0)
使用urllib.request
模块及其HTTPBasicAuthHandler()类。所以你可以:
import urllib.request as ur
mgr = ur.HTTPPasswordMgrWithDefaultRealm()
mgr.add_password(None, 'url', 'username', 'password') # where url is each url
auth = ur.HTTPBasicAuthHandler(mgr)
opener = ur.build_opener(auth)
rsp = opener.open('url/at/some/path').read()
但是,您希望迭代CSV以构建网址列表,并使查询由您决定。