最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲實(shí)現(xiàn)驗(yàn)證碼登錄代碼實(shí)例

 更新時(shí)間:2019年05月10日 11:09:40   作者:小迷妹大米姐  
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)驗(yàn)證碼登錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

很多網(wǎng)站為了避免被惡意訪問,需要設(shè)置驗(yàn)證碼登錄,避免非人類的訪問,Python爬蟲實(shí)現(xiàn)驗(yàn)證碼登錄的原理則是先到登錄頁面將生成的驗(yàn)證碼保存下來,然后人為輸入后,包裝后再POST給服務(wù)器,實(shí)現(xiàn)驗(yàn)證,這里還涉及到了Cookie,其實(shí)Cookie保存在本地主機(jī)上,避免用戶重復(fù)輸入用戶名和密碼,在連接服務(wù)器的時(shí)候?qū)⒃L問連接和Cookie組裝起來POST給服務(wù)器。

這里涉及到了兩次向服務(wù)器POST,一次是Cookie,這里還自行設(shè)計(jì)想要Cookie的內(nèi)容,由于是要登錄,Cookie中存放的則是用戶名和密碼。第二次POST則是向服務(wù)器提交驗(yàn)證。

這里用到Python3,主要用到的包是re  urllib.request   http.cookiejar

上代碼,借鑒了別人的代碼~~~

import re
import urllib.request
import http.cookiejar
#from http.comkie import CookieJar 上面那句和這句等同
 
loginurl='https://www.douban.com/accounts/login'
cookie = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor)#在已存的Cookie下建立連接
 
params={}
params['form_email']='用戶名'
params['form_password']='密碼'#這里寫上已有的用戶名和密碼
params['source']='http://www.douban.com/accounts/login'
 
#從首頁提交登陸
response = opener.open(loginurl,urllib.parse.urlencode(params).encode('utf-8'))#urllib.parse.urlencode(params).encode('utf-8')這個(gè)是向服務(wù)
#器POST的內(nèi)容,可以打印一下response.geturl()請求的連接看一下
#print(response.geturl()[0:33])
#驗(yàn)證成功跳轉(zhuǎn)至登陸頁
if response.geturl()[0:33]=='https://accounts.douban.com/login':
    html = response.read().decode('utf-8')
    #print(html),可以先打印一下文件內(nèi)容,為了看到網(wǎng)頁元素更方便的寫正則,可以復(fù)制下來,在需要獲取的地方用(.+?)表示,然后用group()元組來取得,
    #驗(yàn)證圖片地址
    imgurl=re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>',html)
    if imgurl:
       url=imgurl.group(1)
       #print(url)
       #將驗(yàn)證碼以v.jpg保存在本地,在輸入驗(yàn)證碼的時(shí)候可以手工輸入
       res=urllib.request.urlretrieve(url,'v.jpg')
       captcha = re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>',html)
       #print(captcha.group(1))
       if captcha:
           vcode=input('請輸入圖片上的驗(yàn)證碼:')
           params["captcha-solution"] = vcode
           params["captcha-id"] = captcha.group(1)#這個(gè)是動態(tài)生成的,需要從網(wǎng)頁中獲得
           params["user_login"] = "登錄"
           #提交驗(yàn)證碼驗(yàn)證
           response = opener.open(loginurl,urllib.parse.urlencode(params).encode('utf-8'))
           if response.geturl()=="https://www.douban.com/":
              print("login sucess")

以上所述是小編給大家介紹的Python爬蟲實(shí)現(xiàn)驗(yàn)證碼登錄詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論

天祝| 康保县| 灵石县| 九江县| 岫岩| 东乌珠穆沁旗| 莲花县| 辉县市| 长泰县| 惠安县| 嘉善县| 日照市| 保山市| 福贡县| 汕头市| 波密县| 昭通市| 苍溪县| 林州市| 商都县| 石泉县| 东平县| 津南区| 名山县| 抚顺市| 通江县| 江源县| 德阳市| 博爱县| 东乡族自治县| 名山县| 集安市| 贵港市| 甘南县| 科尔| 临江市| 田东县| 张掖市| 湘阴县| 合水县| 开原市|