Jon*_*Dog 8 python authentication selenium login scrapy
我是scrapy的新手,并且因为良好的在线评论而决定尝试一下.我正在尝试使用scrapy登录网站.我已经成功登录了硒和机械化的组合,通过收集所需的硒饼干并将其添加到机械化.现在我正在尝试用scrapy和selenium做类似的事情,但似乎无法开始工作.我甚至无法判断是否有任何工作.谁能帮帮我吗.以下是我开始的内容.我可能甚至不需要用scrapy转移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()
Run Code Online (Sandbox Code Playgroud)
war*_*iuc 10
你的问题更多的是调试问题,所以我的答案只会有你的问题的一些注释,而不是确切的答案.
def parse(self, response,my_cookies=get_cookies):
return Request(url="http://my_domain.com/",
cookies=my_cookies,
callback=self.login)
Run Code Online (Sandbox Code Playgroud)
my_cookies=get_cookies - 您在这里分配一个函数,而不是它返回的结果.我认为你根本不需要传递任何函数作为参数.它应该是:
def parse(self, response):
return Request(url="http://my_domain.com/",
cookies=self.get_cookies(),
callback=self.login)
Run Code Online (Sandbox Code Playgroud)
cookies争论Request应该是一个字典 - 请确认它确实是一个字典.
我甚至无法判断是否有任何工作.
在回调中放置一些打印以跟随执行.
| 归档时间: |
|
| 查看次数: |
7286 次 |
| 最近记录: |