我尝试从中检索文件的网站需要一个cookie,而我似乎无法弄清楚如何在使用FancyURLopener时添加cookie处理。
这是我的一段代码:
user_agents = [
'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',
'Opera/9.25 (Windows NT 5.1; U; en)',
]
site_file = "somesite.com/pic.jpeg"
class MyOpener(FancyURLopener, object):
version = choice(user_agents)
myopener = MyOpener()
myopener.retrieve(site_file, "pic.jpeg")
我也试过使用这样的东西,但不确定如何用这种方法实际检索文件。
cj = http.cookiejar.CookieJar()
request = urllib.request.Request(site)
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
request.add_header('User-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0')
谢谢
答案 0 :(得分:1)
您可以使用以下方式检索文件:
import shutil
from contextlib import closing
with closing(opener.open(request)) as src, open(filename, "wb") as dest:
shutil.copyfileobj(src, dest)