gpt4 book ai didi

python - 使用 cookie 进行 scrapy 身份验证登录

转载 作者:太空狗 更新时间:2023-10-29 20:54:38 24 4
gpt4 key购买 nike

我是 scrapy 的新手,由于在线评论很好,所以决定尝试一下。我正在尝试使用 scrapy 登录网站。通过用 Selenium 收集所需的 cookie 并将它们添加到机械化,我已经成功地使用 Selenium 和机械化的组合登录。现在我正在尝试用 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()

最佳答案

你的问题更多的是调试问题,所以我的回答只是对你的问题做了一些注释,而不是确切的答案。

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 - 您在这里分配一个函数,而不是它返回的结果。我认为你根本不需要在这里传递任何函数作为参数。应该是:

def parse(self, response):
return Request(url="http://my_domain.com/",
cookies=self.get_cookies(),
callback=self.login)

cookies Request 的参数应该是一个字典 - 请验证它确实是一个字典。

I cant really even tell if anything is working or not.

在回调中放置一些打印以跟随执行。

关于python - 使用 cookie 进行 scrapy 身份验证登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11200926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com