我是新手,由于良好的在线评论,决定尝试一下。我正在尝试使用scrapy登录到一个网站。我已经通过selenium的组合成功登录了,并通过收集所需的selenium饼干并将其添加到机械化中进行了机械化。现在,我正在尝试对selenium和selenium进行类似的处理,但似乎无法使任何事情起作用。我什至无法分辨是否有任何工作。谁能帮帮我吗。我是从下面开始的。我什至不需要用曲奇的方式来传送cookie,但是我不能说这个东西是否真的登录过。谢谢
from scrapy.spider import BaseSpider from scrapy.http import Response,FormRequest,Request from scrapy.selector import HtmlXPathSelector from selenium import webdriver class MySpider(BaseSpider): name = 'MySpider' start_urls = ['http://my_domain.com/'] def get_cookies(self): driver = webdriver.Firefox() driver.implicitly_wait(30) base_url = "http://www.my_domain.com/" driver.get(base_url) driver.find_element_by_name("USER").clear() driver.find_element_by_name("USER").send_keys("my_username") driver.find_element_by_name("PASSWORD").clear() driver.find_element_by_name("PASSWORD").send_keys("my_password") driver.find_element_by_name("submit").click() cookies = driver.get_cookies() driver.close() return cookies def parse(self, response,my_cookies=get_cookies): return Request(url="http://my_domain.com/", cookies=my_cookies, callback=self.login) def login(self,response): return [FormRequest.from_response(response, formname='login_form', formdata={'USER': 'my_username', 'PASSWORD': 'my_password'}, callback=self.after_login)] def after_login(self, response): hxs = HtmlXPathSelector(response) print hxs.select('/html/head/title').extract()
您的问题更多是调试问题,因此我的答案将仅包含有关您的问题的一些注释,而不是确切的答案。
def parse(self, response,my_cookies=get_cookies): return Request(url="http://my_domain.com/", cookies=my_cookies, callback=self.login)
my_cookies=get_cookies-您在此处分配的是函数,而不是返回的结果。我认为您根本不需要在这里传递任何函数作为参数。它应该是:
my_cookies=get_cookies
def parse(self, response): return Request(url="http://my_domain.com/", cookies=self.get_cookies(), callback=self.login)
cookies的论据Request应为dict-请确认它确实为dict。
cookies
Request
我什至无法分辨是否有任何工作。
将一些打印品放在回调中以跟随执行。