7
我是scrapy的新手,并决定尝试一下,因为良好的在线评论。我正尝试使用scrapy登录到网站。我已经成功地使用硒和机械化的组合登录,通过收集硒所需的饼干并将其添加到机械化中。现在我正在尝试做类似于scrapy和selenium的东西,但似乎无法获得任何工作。我甚至不能确定是否有任何工作。谁能帮帮我吗。以下是我开始的。我甚至可能甚至不需要用scrapy转移cookie,但我不能告诉这个事情是否真的登录过。 感谢scrapy认证用cookies登录
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()
修复您记下的问题后,我能够成功登录!注意:硒返回的cookie是一个字典列表,必须将其更改为单个字典。非常感谢您的帮助。 – JonDog
对不起,我新来stackoverflow。我厌倦了投票,但它说我需要15点声望才能投票。我没有看到任何其他方式来标记为回答。更新 - 好吧,我点击复选标记。我认为就是这样。 – JonDog
@ JohnDog ..请问您如何处理从一种形式到另一种形式的cookie转换 – Amistad