1
前提
需要第三方包
httplib2
2
本脚本实现本站自动登录下载文件
import httplib2 import urllib import os from urllib import urlencode # config m_downurl = 'http://dl.iteye.com/topics/download/46527af3-941f-38f0-b0f3-9f74bf5ffa67' m_host = "http://www.iteye.com/login" m_username_value = "***********" m_password_value = "***********" m_authenticity_token = "*************" # create http cache h = httplib2.Http('.cache') # open debug httplib2.debuglevel = 1 # get login url getheader = {"Accept":"text/html, application/xhtml+xml, */*", "Accept-Language":"zh-CN", "User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)", "Accept-Encoding":"gzip, deflate", "Host":"www.iteye.com", "Connection": "Keep-Alive", "cache-control":"no-cache" } response1, content1 = h.request(m_host, headers = getheader) data = {'authenticity_token': m_authenticity_token, 'name' : m_username_value, 'password': m_password_value , 'button': '%E7%99%BB%E3%80%80%E5%BD%95'} postheader = {"Accept":"text/html, application/xhtml+xml, */*", "Referer": "http://www.iteye.com/login", "Accept-Language":"zh-CN", "User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)", "Accept-Encoding":"gzip, deflate", "Host":"www.iteye.com", "Connection": "Keep-Alive", "cache-control":"no-cache", 'Cookie': response1['set-cookie'] } # authentication supports SSL | Http Basic # h.add_credentials(m_username_value, m_password_value ) # login response2, content2 = h.request(m_host, 'POST', urlencode(data), headers = postheader) # download downloadheader = {"Accept":"text/html, application/xhtml+xml, */*", "Accept-Language":"zh-CN", "User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)", "Accept-Encoding":"gzip, deflate", "Host":"dl.iteye.com", "Connection": "Keep-Alive", "cache-control":"no-cache", "Cookie": response2['set-cookie'], } response3, content3 = h.request(m_downurl, headers = downloadheader) # save filename = response3["content-disposition"].split("=")[1].replace('"', "") file = open(filename,'wb') file.write(content3) file.close()