詳解使用scrapy進(jìn)行模擬登陸三種方式
scrapy有三種方法模擬登陸方式:
- 直接攜帶cookies
- 找url地址,發(fā)送post請求存儲cookie
- 找到對應(yīng)的form表單,自動解析input標(biāo)簽,自動解析post請求的url地址,自動帶上數(shù)據(jù),自動發(fā)送請求
1、攜帶cookies登陸github
import scrapy
import re
class Login1Spider(scrapy.Spider):
name = 'login1'
allowed_domains = ['github.com']
start_urls = ['https://github.com/NoobPythoner'] # 這是一個需要登陸以后才能訪問的頁面
def start_requests(self): # 重構(gòu)start_requests方法
# 這個cookies_str是抓包獲取的
cookies_str = '...' # 抓包獲取
# 將cookies_str轉(zhuǎn)換為cookies_dict
cookies_dict = {i.split('=')[0]:i.split('=')[1] for i in cookies_str.split('; ')}
yield scrapy.Request(
self.start_urls[0],
callback=self.parse,
cookies=cookies_dict
)
def parse(self, response): # 通過正則表達(dá)式匹配用戶名來驗證是否登陸成功
result_list = re.findall(r'noobpythoner|NoobPythoner', response.body.decode())
print(result_list)
pass
注意:
scrapy中cookie不能夠放在headers中,在構(gòu)造請求的時候有專門的cookies參數(shù),能夠接受字典形式的coookie
在setting中設(shè)置ROBOTS協(xié)議、USER_AGENT
2、使用scrapy.FormRequest()登錄
通過scrapy.FormRequest能夠發(fā)送post請求,同時需要添加fromdata參數(shù)作為請求體,以及callback
yield scrapy.FormRequest(
"https://github.com/session",
formdata={
"authenticity_token":authenticity_token,
"utf8":utf8,
"commit":commit,
"login":"****",
"password":"****"
},
callback=self.parse_login
)
3、使用scrapy.Formrequest.from_response登陸github
import scrapy
import re
class Login3Spider(scrapy.Spider):
name = 'login3'
allowed_domains = ['github.com']
start_urls = ['https://github.com/login']
def parse(self, response):
yield scrapy.FormRequest.from_response(
response, # 傳入response對象,自動解析
# 可以通過xpath來定位form表單,當(dāng)前頁只有一個form表單時,將會自動定位
formxpath='//*[@id="login"]/form',
formdata={'login': '****', 'password': '***'},
callback=self.parse_login
)
def parse_login(self,response):
ret = re.findall(r"noobpythoner|NoobPythoner", response.text)
print(ret)
到此這篇關(guān)于詳解使用scrapy進(jìn)行模擬登陸三種方式的文章就介紹到這了,更多相關(guān)scrapy模擬登陸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python-sys.stdout作為默認(rèn)函數(shù)參數(shù)的實現(xiàn)
今天小編就為大家分享一篇 python-sys.stdout作為默認(rèn)函數(shù)參數(shù)的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python爬蟲之Selenium設(shè)置元素等待的方法
這篇文章主要介紹了Python爬蟲之Selenium設(shè)置元素等待的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
分?jǐn)?shù)霸榜! python助你微信跳一跳拿高分
分?jǐn)?shù)霸榜!這篇文章主要為大家詳細(xì)介紹了python助你微信跳一跳拿高分的秘籍,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
python使用Flask框架創(chuàng)建一個簡單的動態(tài)日歷效果
這篇文章主要介紹了python使用Flask框架創(chuàng)建一個簡單的動態(tài)日歷,本文通過實例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2024-12-12
python中l(wèi)ambda與def用法對比實例分析
這篇文章主要介紹了python中l(wèi)ambda與def用法對比,實例分析了lambda與def的區(qū)別與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-04-04

