濡備綍浣跨敤Scrapy杩涜琛ㄥ崟鏁版嵁鑷姩濉厖
浣跨敤Scrapy杩涜琛ㄥ崟鏁版嵁鑷姩濉厖鍙互閫氳繃鑷畾涔塵iddleware鏉ュ疄鐜般€備笅闈㈡槸涓€涓畝鍗曠殑绀轰緥浠g爜锛屾紨绀轰簡濡備綍鍦⊿crapy涓嚜鍔ㄥ~鍏呰〃鍗曟暟鎹細
from scrapy.http import FormRequest
class FormMiddleware:
def process_request(self, request, spider):
if hasattr(spider, 'form_data'):
form_data = spider.form_data
if isinstance(request, FormRequest):
form_data.update(request.formdata)
request = request.replace(formdata=form_data)
return None
# 灏嗚嚜瀹氫箟middleware娣诲姞鍒癝crapy鐨凞OWNLOADER_MIDDLEWARES閰嶇疆涓?/span>
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.FormMiddleware': 543,
}
# 鍦⊿pider涓畾涔夎〃鍗曟暟鎹?/span>
class MySpider(scrapy.Spider):
name = 'myspider'
start_urls = ['http://example.com']
form_data = {
'username': 'myusername',
'password': 'mypassword',
}
def parse(self, response):
# 鍦ㄨ繖閲屽鐞嗚〃鍗曟彁浜ょ瓑鎿嶄綔
pass
鍦ㄤ笂闈㈢殑绀轰緥涓紝鎴戜滑鑷畾涔変簡涓€涓狥ormMiddleware绫伙紝瀹冧細鍦ㄨ姹傝鍙戦€佷箣鍓嶈嚜鍔ㄥ~鍏呰〃鍗曟暟鎹€傜劧鍚庡皢杩欎釜middleware娣诲姞鍒癝crapy鐨凞OWNLOADER_MIDDLEWARES閰嶇疆涓€傚湪Spider涓畾涔変簡form_data灞炴€э紝鐢ㄤ簬瀛樺偍琛ㄥ崟鏁版嵁銆傚綋Spider鍙戦€佽〃鍗曡姹傛椂锛宮iddleware浼氳嚜鍔ㄥ~鍏呰〃鍗曟暟鎹€?/p>
杩欐牱灏卞彲浠ヤ娇鐢⊿crapy杩涜琛ㄥ崟鏁版嵁鑷姩濉厖浜嗐€傚笇鏈涘鎮ㄦ湁甯姪锛?/p>
相关问答