日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python爬蟲解決驗(yàn)證碼的思路及示例

系統(tǒng) 1679 0

如果直接從生成驗(yàn)證碼的頁面把驗(yàn)證碼下載到本地后識(shí)別,再構(gòu)造表單數(shù)據(jù)發(fā)送的話,會(huì)有一個(gè)驗(yàn)證碼同步的問題,即請求了兩次驗(yàn)證碼,而識(shí)別出來的驗(yàn)證碼并不是實(shí)際需要發(fā)送的驗(yàn)證碼。有如下幾種方法解決。

法1:

用session:

            
mysession = requests.Session()
login_url = 'http://xxx.com'
checkcode_url='http://yyy.com'
html = mysession.get(login_url,timeout=60*4)
#....balabala解析操作....
checkcode = mysession.get(checkcode_url,timeout=60*4)
with open('checkcode.png','wb') as f:
  f.write(checkcode.content)
 
#接下來balabala對圖像操作,可以用python的相關(guān)庫(識(shí)別率低,教務(wù)網(wǎng)的驗(yàn)證碼都?jí)騿埽部梢杂迷扑俚鹊谌津?yàn)證碼識(shí)別網(wǎng)站提供的有償服務(wù)(識(shí)別度較高)
 
#再接下來構(gòu)造表單數(shù)據(jù)balabala
          

法2:

用cookie:

            
#綁定cookie
checkcode_url='http://yyy.com'
cookie = cookielib.CookieJar()
handler = urllib2.HTTPCookieProcessor(cookie)
opener = urllib2.build_opener(handler)
 
#先讀取驗(yàn)證碼的url
picture = opener.open(checkcode_url).read()
 
#balabala圖像處理
 
# 生成post數(shù)據(jù) 
data = urllib.urlencode(postData)
# 構(gòu)造request請求
request = urllib2.Request(PostUrl, data, headers)
# 利用之前存有cookie的opener登錄頁面
try:
  response = opener.open(request)
  result = response.read()
except urllib2.HTTPError, e:
  print e.code
          

法3:

selenium+手動(dòng)構(gòu)造cookie: 該方法無需識(shí)別驗(yàn)證碼,本人尚未嘗試。

webdriver 操作 cookie 的方法有:

  • get_cookies() 獲得所有 cookie 信息
  • get_cookie(name) 返回特定 name 有 cookie 信息
  • add_cookie(cookie_dict) 添加 cookie,必須有 name 和 value 值
  • delete_cookie(name) 刪除特定(部分)的 cookie 信息
  • delete_all_cookies() 刪除所有 cookie 信息
            
....
#第一次訪問 xxx 網(wǎng)站
driver.get("http://xxx.com")
#將用戶名密碼寫入瀏覽器 cookie
driver.add_cookie({'name':'username','value':'username'})
driver.add_cookie({'name':'password','value':'password'})
#再次訪問 xxx 網(wǎng)站,將會(huì)自動(dòng)登錄
driver.get("http://xxx.com")
time.sleep(5)
....
driver.quit()
          

這種方法難點(diǎn)在于確定該網(wǎng)站是用cookie中的什么key值來表示“用戶名”和“密碼”的。而且好像有些cookie是加密過的。可以先用get_cookies()進(jìn)行觀察。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 章丘市| 乌拉特中旗| 大城县| 固阳县| 涪陵区| 温泉县| 南和县| 东乡| 阿荣旗| 剑阁县| 武定县| 馆陶县| 陕西省| 拜城县| 水城县| 梧州市| 凉城县| 千阳县| 霍林郭勒市| 通州区| 三门峡市| 肥东县| 积石山| 平泉县| 乌拉特中旗| 吴旗县| 印江| 宜都市| 兴宁市| 贵州省| 垫江县| 天全县| 循化| 斗六市| 崇文区| 临洮县| 大关县| 驻马店市| 缙云县| 呼伦贝尔市| 金阳县|