Python 在javascript站点上填写登录表单,使用scrapy爬行

Python 在javascript站点上填写登录表单,使用scrapy爬行,python,selenium,selenium-webdriver,web-scraping,scrapy,Python,Selenium,Selenium Webdriver,Web Scraping,Scrapy,我想要什么 嘿,朋友们,我必须创建一个蜘蛛,它可以填写登录表单,然后开始抓取。 我知道如何使用scrapy登录,但在这个页面上,它不会工作,除非我使用selenium,因为有很多javascript。 正如您所看到的,我开始在selenium中构建,它完成了这项工作,但在登录之后,什么也没有发生 我得到了一个.csv文件作为源文件,其中保存了所有内部链接,我只需要打开“链接1”,获取我需要的所有信息,然后是“链接2”,依此类推 域: 我的scrapy代码工作正常,除非我尝试在没有登录过程的情况下

我想要什么

嘿,朋友们,我必须创建一个蜘蛛,它可以填写登录表单,然后开始抓取。 我知道如何使用scrapy登录,但在这个页面上,它不会工作,除非我使用selenium,因为有很多javascript。 正如您所看到的,我开始在selenium中构建,它完成了这项工作,但在登录之后,什么也没有发生

我得到了一个.csv文件作为源文件,其中保存了所有内部链接,我只需要打开“链接1”,获取我需要的所有信息,然后是“链接2”,依此类推

域:

我的scrapy代码工作正常,除非我尝试在没有登录过程的情况下爬行,但它是元素,因为只有登录后,才能看到物品的价格。 我已经用scrapy成功地刮到了那个页面,所以这确实是我必须采取的最后一步,但我绝望了

我在这里、谷歌、youtube等网站上读了很多文章,但似乎没有一篇能帮我解决问题

在我看来,我的蜘蛛应该这样做:打开selenium浏览器,填写登录表单。现在我们已经登录,scrapy应该完成它的任务,并获得我需要的所有信息

我的代码

import scrapy
从selenium导入webdriver
从scrapy.LinkExtractor导入LinkExtractor
从scrapy.spider导入爬行蜘蛛,规则
from..items导入ScrapyloginItem
从scrapy.http导入请求,FormRequest
导入csv
#硒的登录过程
用户名='不真实'
密码='登录数据'
driver=webdriver.Chrome('C:\\webdriver\\chromedriver.exe')
驱动程序。获取(“https://www.duif.nl/login")
login\u form=驱动程序。通过\u id(“login-form”)查找\u元素
用户名=驱动程序。通过名称(“用户名”)查找元素
用户名。发送密钥(用户名)
密码=驱动程序。通过名称(“密码”)查找元素
密码。发送密钥(密码)
login\u button=driver。通过xpath('//input[@class=“button black”]”查找\u元素
登录按钮。单击()
DuifFinish类(爬行蜘蛛):
name=“duifloginpics”
允许的_域=['duif.nl']
自定义_设置={'FEED_EXPORT_FIELDS':['SKU','Title','Link','Images','Stock','Desc','Title_small']}
将open('duifonlylinks.csv','r')作为f:
reader=csv.DictReader(f)
start_url=[items['Link']用于读卡器中的项目]
规则=(
统治(
LinkExtractor(),
callback='parse_page',
follow=True
),
)
def start_请求(自我):
让步请求(
callback=self.parse,
Don_filter=True
)
登录后的def(自我,响应):
accview=response.xpath('//div[@class=“row myaccountrow”]'))
如果要查看:
打印(‘成功’)
其他:
打印(':(')
对于self.start\u url中的url:
yield response.follow(url=url,callback=self.parse_页面)
def解析页面(自我,响应):
productpage=response.xpath('//div[@class=“product details col-md-12”]”)
如果不是productpage:
打印('No productlink',response.url)
对于productpage中的页面:
items=ScrapyloginItem()
items['SKU']=response.xpath('//p[@class=“desc”]/text()).get()
items['Title']=response.xpath('//h1[@class=“product Title”]/text()).get()
items['Link']=response.url
items['Images']=response.xpath('//div[@class=“internal”]/img/@src').getall()
items['Stock']=response.xpath('//div[@class=“desc”]/ul/li/em/text()).getall()
items['Desc']=response.xpath('//div[@class=“item”]/p/text()).getall()
items['Title\u small']=response.xpath('//div[@class=“left”]/p/text()).get()
收益项目
我遗漏了什么,蜘蛛在做它的工作? Selenium是处理javascript的最佳方法吗?自从我在大约1个月前开始学习scrapy以来,我真的很想坚持下去

如果你们中有人知道一种方法的话,我怎么能不用硒来做呢

如果yall丢失了一些重要信息来重建我的问题,请告诉我