法一:使用selenium
在middlewares.py中
import time from scrapy import signals from selenium import webdriver from scrapy.http import HtmlResponse import requests class LoginMiddle(object): def process_request(self,request,spider): if spider.name=='myzhihu':#判断是哪个爬虫名 if request.url.find('signup')!=-1:#这里signup是在链接中的signup,-1表示未登陆 spider.broswer=webdriver.Chrome() spider.broswer.get(request.url)#获取url,myzhihu中的start_url time.sleep(1) spider.broswer.find_element_by_xpath('//div[@class="SignContainer-switch"]/span').click() time.sleep(1) #获取输入框 username=spider.broswer.find_element_by_name('username')# password=spider.broswer.find_element_by_name('password') #传值