1. 程式人生 > >crawler碎碎念5 豆瓣爬取操作之登錄練習

crawler碎碎念5 豆瓣爬取操作之登錄練習

保存 網頁 utf 程序 val with open 平臺 xxxxxxxx edi

import requests

import html5lib

import re

from bs4 import BeautifulSoup

s = requests.Session()

url_login = http://accounts.douban.com/login

url_contacts = https://www.douban.com/people/****/contacts

 

formdata = {

redir:https://www.douban.com,      #重定向

form_email:[email protected],

form_password:xxxxxxxxxxxxxxlogin:u登陸 } ‘‘‘ 關於字符串前面的功能的補充 1.r/R 表示非轉義的原始字符串,比如在字符串中如果出現\n是換行,但是如果在字符串的前面添加r則表示\和n兩個字符,一般常見於正則表達式中。 2.b Python3裏默認的str是(Python2裏的)unicode, bytes是(Python2)的str, b前綴代表的就是bytes。 Python2裏, b前綴沒什麽具體意義, 只是為了兼容Python3的這種寫法。 3.u/U 表示unicode字符串 ,不是僅僅是針對中文, 可以針對任何的字符串,代表是對字符串進行unicode編碼。 一般英文字符在使用各種編碼下, 基本都可以正常解析, 所以一般不帶u;但是中文, 必須表明所需編碼, 否則一旦編碼轉換就會出現亂碼。 建議所有編碼方式采用UTF
-8。 ’‘’ headers = 這裏自己打開開發者工具查看瀏覽器,復制粘貼就行了 r = requestys.post(url_login,data = formdata,headers= headers) content = r.text soup = BeautifulSoup(content,html5lib) captcha = soup.findall(img,id = captcha_image) #查看是否有驗證碼 if captcha:   captcha_url = captcha[src]   re_captcha_id
= r<input type-"hidden"name="captcha-id" value = "(.*?)"/   captcha_id = re.findall(re_captcha_id,content)   print(captcha_id)   print(captcha_url)   print(captcha_url)   capycha_text = input(please input the captcha:)   formdata[captacha-solution] =captcha_text   formdata[captacha-id] =captcha_id   r = requests.post(url_login,data = formdata,headers = headers) print(r.text) r = s.get(url_conteacts) with open(contacts.txt,w+,encoding = utf-8‘‘) as f:     f.write(r.text)   




但是我們也發現每一次登陸都要輸入密碼和賬戶,還要驗證,這也實在是太麻煩了,所以可以通過cookies,這就是我們常說的那些記住當前網址的密碼

import requests

headers
= {........} cookies = {...........} url = xxxxxxxxxxxx r= requests.get(url,cookies=cookies,headers = headers) print(r.text) with open(sssss.txt,wb+) as f :   f.write(r.content)

這其實就是最基本的一個爬蟲套路模板了

關於上面的那個爬蟲,爬出來的其實是驗證碼的圖片,還需要手動打開然後識別圖片裏面的數字再手動輸入,這個其實也是很麻煩的

這裏先給出思路以後驗證(如果還記得的呼哈)

1,利用selenium打開圖片所在網頁,保存這張圖片,把圖片讀取到百度識圖的api中,得到的答案自動反饋給程序

2,有一種設想,既然最後他要驗證你輸入的驗證碼對不對,那是不是圖片的網頁信息裏面就夾雜著要比對的信息,那我是不是可以直接爬取這個然後反饋給程序?

3,要麽索性偷個懶,鏈接掛到網上的驗證碼識別平臺(滑稽)

crawler碎碎念5 豆瓣爬取操作之登錄練習