crawler碎碎念5 豆瓣爬取操作之登录练习
生活随笔
收集整理的這篇文章主要介紹了
crawler碎碎念5 豆瓣爬取操作之登录练习
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
import requestsimport html5libimport refrom bs4 import BeautifulSoups = requests.Session() #這里要提一點(diǎn),就是session的話就是對(duì)會(huì)話的一種維持,因?yàn)閞equest缺乏持續(xù)性,僅限于2個(gè)相鄰的頁面url_login = 'http://accounts.douban.com/login'url_contacts = 'https://www.douban.com/people/****/contacts'formdata = {'redir':'https://www.douban.com', #重定向'form_email':'t.t.panda@hotmail.com','form_password':'xxxxxxxxxxxxxx','login':u'登陸' }‘‘‘關(guān)于字符串前面的功能的補(bǔ)充1.r/R
表示非轉(zhuǎn)義的原始字符串,比如在字符串中如果出現(xiàn)\n是換行,但是如果在字符串的前面添加r則表示\和n兩個(gè)字符,一般常見于正則表達(dá)式中。2.b
Python3里默認(rèn)的str是(Python2里的)unicode, bytes是(Python2)的str, b前綴代表的就是bytes。 Python2里, b前綴沒什么具體意義, 只是為了兼容Python3的這種寫法。3.u/U
表示unicode字符串 ,不是僅僅是針對(duì)中文, 可以針對(duì)任何的字符串,代表是對(duì)字符串進(jìn)行unicode編碼。 一般英文字符在使用各種編碼下, 基本都可以正常解析, 所以一般不帶u;但是中文, 必須表明所需編碼, 否則一旦編碼轉(zhuǎn)換就會(huì)出現(xiàn)亂碼。 建議所有編碼方式采用UTF-8。’‘’headers = ' 這里自己打開開發(fā)者工具查看瀏覽器,復(fù)制粘貼就行了'r = requestys.post(url_login,data = formdata,headers= headers)content = r.textsoup = BeautifulSoup(content,'html5lib')captcha = soup.findall('img',id = 'captcha_image') #查看是否有驗(yàn)證碼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_textformdata['captacha-id'] =captcha_idr = 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)
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)
這其實(shí)就是最基本的一個(gè)爬蟲套路模板了
?
但是我們也發(fā)現(xiàn)每一次登陸都要輸入密碼和賬戶,還要驗(yàn)證,這也實(shí)在是太麻煩了,所以可以通過cookies,這就是我們常說的那些記住當(dāng)前網(wǎng)址的密碼
import requestsheaders = {........} 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)
這其實(shí)就是最基本的一個(gè)爬蟲套路模板了
關(guān)于上面的那個(gè)爬蟲,爬出來的其實(shí)是驗(yàn)證碼的圖片,還需要手動(dòng)打開然后識(shí)別圖片里面的數(shù)字再手動(dòng)輸入,這個(gè)其實(shí)也是很麻煩的
這里先給出思路以后驗(yàn)證(如果還記得的呼哈)
1,利用selenium打開圖片所在網(wǎng)頁,保存這張圖片,把圖片讀取到百度識(shí)圖的api中,得到的答案自動(dòng)反饋給程序
2,有一種設(shè)想,既然最后他要驗(yàn)證你輸入的驗(yàn)證碼對(duì)不對(duì),那是不是圖片的網(wǎng)頁信息里面就夾雜著要比對(duì)的信息,那我是不是可以直接爬取這個(gè)然后反饋給程序?
3,要么索性偷個(gè)懶,鏈接掛到網(wǎng)上的驗(yàn)證碼識(shí)別平臺(tái)(滑稽)
轉(zhuǎn)載于:https://www.cnblogs.com/xingnie/p/9703386.html
總結(jié)
以上是生活随笔為你收集整理的crawler碎碎念5 豆瓣爬取操作之登录练习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [计蒜客]百度地图的实时路况
- 下一篇: Power BI新主页将使内容的导航和发