crawler碎碎念5 豆瓣爬取操作之登錄練習
阿新 • • 發佈:2018-09-26
保存 網頁 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‘:‘xxxxxxxxxxxxxx‘, ‘login‘: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 豆瓣爬取操作之登錄練習