python爬蟲模擬登入初體驗

2021-07-15 16:39:53 字數 2372 閱讀 3197

第一次學習爬蟲,自己真是醉醉噠,因為實驗室專案需要,所以迅速學習了一下,這次做的是乙個帶cookie的模擬登入,其中遇到了許許多多的問題,最難的就是要訪問的頁面加入了csrf跨站請求偽造驗證(因為我是渣渣,,所以感到很難做)和如何帶cookie來模擬登入,最後在好友某殷的幫助下,順利解決了問題。先貼**

# -*- coding: utf-8 -*-

importurllib2

importurllib

importcookielib

importre

frombs4importbeautifulsoup

importrequests

headers=dict()

login_url ="http://www.****.cn/users/sign"session=requests.session()
#利用session來獲取並儲存請求的頁面的cookie,否則先獲取token,cookie會過期

html =session.get(login_url,headers=headers).text

#利用帶有session的頁面通過beautifulsoup抓取token驗證碼

htmldoc=beautifulsoup(html,'html.parser')

token=htmldoc.find_all('meta')[-1]['content']

#構造請求資料

postdata = urllib.urlencode()

#列印請求返回http狀態碼

print(session.post(url=login_url,params=postdata,headers=headers))

#抓取登入後的頁面

printres

是的,就這麼短,我卻研究了兩天(哭 ,難點主要在於如何摳出csrf,經過學習請教某殷,使用了非常強大的beautifulsoup工具(還不怎麼會玩),然後最頭疼的問題是,
一切都布置好後,一直出現http 422狀態錯誤,一開始以為是抓取後編碼不對,於是各種嘗試修改字元編碼,結果都沒卵用,後來各種查閱,發現了是之前寫的請求方法錯了,
我一開始就先這麼寫:
'''過期的抓取方法def gethtml(url):page = urllib.urlopen(url)html = page.read()return htmldef get_token():url = "http://www.****.cn/users/sign_in"content = gethtml(url)soup = beautifulsoup(content, "html.parser")input_tag=soup.input.next_siblingreturn input_tag['value']'''
token=get_token()

session=requests.session()
session.post(url=login_url,params=postdata,headers=headers) #直接請求 問題所在點
res=session.get("http://www.****.cn/msia/all?page=5").text

printres

於是就出現了的post以後,抓取的仍是登入介面,究其原因就是先進行了token進行了抓取,然後才post請求呼叫session,這樣就造成了之前的token過期,
所以需要先用session請求,儲存請求的頁面,再用

beautifulsoup抓取,再用同乙個session post即可登入成功,原來爬蟲也這麼有趣,最後再一次感謝某殷,

繼續加油!

Python爬蟲之初體驗

python爬蟲,一般用於抓取特定的內容,最近想學學,通過網路抓取自己想要的內容,於是乎學習了一下python,用乙個小案例來紀念一下學習的成果。coding utf 8 import urllib import re 定義個函式 抓取網頁內容 def gethtml url webpage url...

爬蟲利器初體驗

scrapy 資料流 scrapy 元件 爬取豆瓣電影 top250 前言為什麼要學 scrapy 呢?看下圖,就清楚了。很多招聘要求都有 scrapy,主要是因為 scrapy 確實很強。那到底強在 呢?請在文中找答案。scrapy 資料流 首先我們先來學習一下 scrapy 的工作流程。scra...

初體驗 Python爬蟲網路收集 一

python語言最近榮登最受歡迎語言之榜首,看來學習python是目前相當明智的,對於python的學習,z 本人簡稱 我是舉雙手贊成的,甚至開始慫恿老婆和我一起學,由於python語言的簡潔易用,這裡直接面對已經有程式設計基礎的讀者。z寫這裡,主要是自己學習過程,好記性不如爛筆頭,熟才能生巧 其次...