Scrapy模擬登錄趕集網(wǎng)的實現(xiàn)代碼
1.打開趕集網(wǎng)登錄界面,先模擬登錄并抓包,獲得post請求的request參數(shù)

2. 我們只需構(gòu)造出上面的參數(shù)傳入formdata即可
參數(shù)分析:
setcookie:為自動登錄所傳的值,不勾選時默認為0。
__hash__值的分析:只需要查看response網(wǎng)頁源代碼即可 ,然后用正則表達式提取。
3.代碼實現(xiàn)
1.workon到自己的虛擬環(huán)境 cmd切換到項目目錄,輸入scrapy startproject ganjiwangdenglu,然后就可以用pycharm打開該目錄啦。
2.在pycharm terminal中輸入scrapy ganji ganjicom 創(chuà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' # 驗證碼url
yield scrapy.Request(img_url, callback=self.do_formdata, meta={'hash_code': hash_code}) # 發(fā)送獲取驗證碼請求并保存驗證碼到本地
def do_formdata(self, response):
with open('yzm.jpg', 'wb') as f:
f.write(response.body)
# 驗證碼三種方案:1,保存下來手動輸入,2,云打碼,3 tesseract模塊,在這里我們手動輸入
code = input('請輸入驗證碼:')
# 創(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ā)送登錄請求
def after_login(self, response):
print(response.text)
4.終端輸入scrapy carwl ganji 即可大功告成 。
返回來的json字符串解析如下:

注:setting中的設(shè)置不在贅述。
總結(jié)
到此這篇關(guān)于Scrapy模擬登錄趕集網(wǎng)的文章就介紹到這了,更多相關(guān)Scrapy登錄趕集網(wǎng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
記錄一下scrapy中settings的一些配置小結(jié)
這篇文章主要介紹了記錄一下scrapy中settings的一些配置小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
選擇python進行數(shù)據(jù)分析的理由和優(yōu)勢
在本篇文章中小編給大家整理了關(guān)于選擇python進行數(shù)據(jù)分析的理由和優(yōu)勢,對此有需要的朋友們可以跟著學習參考下。2019-06-06

