詳解使用scrapy進行模擬登陸三種方式
scrapy有三種方法模擬登陸方式:
- 直接攜帶cookies
- 找url地址,發(fā)送post請求存儲cookie
- 找到對應的form表單,自動解析input標簽,自動解析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): # 通過正則表達式匹配用戶名來驗證是否登陸成功 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表單,當前頁只有一個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進行模擬登陸三種方式的文章就介紹到這了,更多相關(guān)scrapy模擬登陸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用pandas模塊實現(xiàn)表之間的關(guān)聯(lián)
在數(shù)據(jù)分析和處理中,表之間的關(guān)聯(lián)是非常常見的操作,本文為大家介紹了pandas中實現(xiàn)表之間的關(guān)聯(lián)有四種方式,感興趣的小伙伴可以了解一下2023-07-07快速進修Python指南之控制if-else循環(huán)技巧
這篇文章主要為大家介紹了Java開發(fā)者的Python快速進修指南之控制之if-else和循環(huán)技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12