Scrapy模擬登錄趕集網(wǎng)的實(shí)現(xiàn)代碼
1.打開(kāi)趕集網(wǎng)登錄界面,先模擬登錄并抓包,獲得post請(qǐng)求的request參數(shù)
2. 我們只需構(gòu)造出上面的參數(shù)傳入formdata即可
參數(shù)分析:
setcookie:為自動(dòng)登錄所傳的值,不勾選時(shí)默認(rèn)為0。
__hash__值的分析:只需要查看response網(wǎng)頁(yè)源代碼即可 ,然后用正則表達(dá)式提取。
3.代碼實(shí)現(xiàn)
1.workon到自己的虛擬環(huán)境 cmd切換到項(xiàng)目目錄,輸入scrapy startproject ganjiwangdenglu,然后就可以用pycharm打開(kāi)該目錄啦。
2.在pycharm terminal中輸入scrapy ganji ganjicom 創(chuàng)建地址,如下為項(xiàng)目目錄
3. 代碼詳情
import scrapy import re class GanjiSpider(scrapy.Spider): name = 'ganji' allowed_domains = ['ganji.com'] start_urls = ['https://passport.ganji.com/login.php'] def parse(self, response): hash_code = re.search(r'"__hash__":"(.+)"}', response.text).group(1) # 正則獲取哈希 img_url = 'https://passport.ganji.com/ajax.php?dir=captcha&module=login_captcha' # 驗(yàn)證碼url yield scrapy.Request(img_url, callback=self.do_formdata, meta={'hash_code': hash_code}) # 發(fā)送獲取驗(yàn)證碼請(qǐng)求并保存驗(yàn)證碼到本地 def do_formdata(self, response): with open('yzm.jpg', 'wb') as f: f.write(response.body) # 驗(yàn)證碼三種方案:1,保存下來(lái)手動(dòng)輸入,2,云打碼,3 tesseract模塊,在這里我們手動(dòng)輸入 code = input('請(qǐng)輸入驗(yàn)證碼:') # 創(chuàng)建表單 formdata = { 'username': 'your_username', 'password': 'your_password', 'setcookie': '14', 'checkCode': code, 'next': '', 'source': 'passport', '__hash__': response.request.meta['hash_code'] # meta是在respose.request中 } login_url = "https://passport.ganji.com/login.php" yield scrapy.FormRequest(url=login_url, formdata=formdata, callback=self.after_login) # 發(fā)送登錄請(qǐng)求 def after_login(self, response): print(response.text)
4.終端輸入scrapy carwl ganji 即可大功告成 。
返回來(lái)的json字符串解析如下:
注:setting中的設(shè)置不在贅述。
總結(jié)
到此這篇關(guān)于Scrapy模擬登錄趕集網(wǎng)的文章就介紹到這了,更多相關(guān)Scrapy登錄趕集網(wǎng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
記錄一下scrapy中settings的一些配置小結(jié)
這篇文章主要介紹了記錄一下scrapy中settings的一些配置小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09利用Seaborn繪制20個(gè)精美的pairplot圖
本文記錄的使用seaborn繪制pairplot圖,主要是用來(lái)顯示兩兩變量之間的關(guān)系(線性或非線性,有無(wú)較為明顯的相關(guān)關(guān)系等),感興趣的可以了解一下2022-07-07深入解析python項(xiàng)目引用運(yùn)行路徑
這篇文章主要介紹了python項(xiàng)目引用運(yùn)行路徑的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05Python實(shí)現(xiàn)全局變量的兩個(gè)解決方法
這篇文章主要介紹了Python實(shí)現(xiàn)全局變量的兩個(gè)解決方法,需要的朋友可以參考下2014-07-07選擇python進(jìn)行數(shù)據(jù)分析的理由和優(yōu)勢(shì)
在本篇文章中小編給大家整理了關(guān)于選擇python進(jìn)行數(shù)據(jù)分析的理由和優(yōu)勢(shì),對(duì)此有需要的朋友們可以跟著學(xué)習(xí)參考下。2019-06-06