我正和我的学校做一些夏季研究。我必须使用图表从受限制的站点下载约2000张图像。我绝对可以手动执行此操作,但我知道使用某种脚本会更快。我已经选择了Python,因为我认为它比其他语言更容易。我有网站的URL和存储图像的数据库的通用链接。我计划为该程序提供一个轨道号列表,它将下载相应的图像。主要问题是,当您访问该站点时,它会通过浏览器弹出登录窗口,而不是HTML。我无法查看任何站点代码以了解如何提交登录信息。
我已经尝试过使用urllib和cookielib。我意识到urllib2在Python 3中不起作用。我也研究过使用请求和机械化而没有运气。
import cookielib
import urllib2
import string
def cook():
url="SITE"
cj = cookielib.LWPCookieJar()
authinfo = urllib2.HTTPBasicAuthHandler()
realm="realmName"
username="USERNAME"
password="PASS"
host="HOST"
authinfo.add_password(realm, host, username, password)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj), authinfo)
urllib2.install_opener(opener)
# Create request object
txheaders = { 'User-agent' : "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)" }
try:
req = urllib2.Request(url, None, txheaders)
cj.add_cookie_header(req)
f = urllib2.urlopen(req)
except IOError as e:
print("Failed to open", url)
if hasattr(e, 'code'):
print("Error code:", e.code)
else:
print (f)
print (f.read())
print (f.info())
f.close()
print('Cookies:')
for index, cookie in enumerate(cj):
print (index, " : ", cookie)
cj.save("cookies.lwp")
显然,代码只会引发一堆错误。我真的只需要能够进入该网站并下载我的图像。
您应该使用selenium web驱动程序使登录自动化并下载图像。阅读此article它将帮助您从登录所需网站中删除数据
完全能够通过绕过验证来修复它。我知道它不是一个很好的方法,但它做了我需要它。多谢你们!