學(xué)習(xí)新知識(shí)的時(shí)候消请,可能當(dāng)時(shí)無(wú)法立即理解杂腰,可是經(jīng)歷過(guò)這一痛苦的階段再回來(lái)看看复亏,就有種柳暗花明的感覺(jué) 趾娃。所以要及時(shí)記筆記才對(duì)啊年輕人。 ????????????? —— ——? 任三爺
#coding=utf-8
"""模擬登錄豆瓣"""
import requests
from lxml import etree
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
header = {
? ? 'Host':'accounts.douban.com',
? ? 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0',
? ? 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
? ? 'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
? ? 'Accept-Encoding':'gzip, deflate, br',
? ? 'Referer':'https://www.douban.com/accounts/login',
? ? 'Content-Type':'application/x-www-form-urlencoded',
? ? 'Content-Length':'126'
}
data= {
? ? 'redir':'https://www.douban.com',
? ? 'form_email':'',
? ? 'form_password':''
}
#data和header由谷歌瀏覽器獲得
#用戶輸入用戶名和密碼登錄豆瓣
def? Login01 ( url,username,pwd ):
? ? data['form_email'] = username
? ? data['form_password'] = pwd
? ? s = requests.Session()
? ? text = s.get(url).text
? ? if '請(qǐng)輸入上圖中的單詞' in text:? ? #如果有驗(yàn)證碼
? ? ? ? page = etree.HTML(text)
? ? ? ? img = page.xpath('//img[@id="captcha_image"]/@src')? ? #取得驗(yàn)證碼圖片
? ? ? ? id = page.xpath('//div[@class="captcha_block"]/input[@type="hidden"]/@value')? #取得登錄必需的驗(yàn)證碼值
? ? ? ? pic = requests.get(img[0])
? ? ? ? with open('豆瓣驗(yàn)證碼','wb') as f:
? ? ? ? ? ? for chunk in pic.iter_content(1024):
? ? ? ? ? ? ? ? if chunk:
? ? ? ? ? ? ? ? ? ? f.write(chunk)
? ? ? ? captcha = input('請(qǐng)輸入驗(yàn)證碼:')
? ? ? ? print captcha
? ? ? ? data['captcha-solution'] = captcha
? ? ? ? data['captcha-id'] = id[0]
? ? p = s.post(url, headers=header, data=data)
? ? print "p.text: ", p.text
? ? if '的帳號(hào)' in p.text:
? ? ? ? print('登錄成功')
? ? else:
? ? ? ? print('登錄失敗')
if __name__ == '__main__':
? ? url = "https://www.douban.com/accounts/login"
? ? # username = input('請(qǐng)輸入用戶名:')
? ? username = '15711057804'
? ? # pwd = input('請(qǐng)輸入密碼:')
? ? pwd = 'qst12345'
? ? Login01(url, username, pwd)