gpt4 book ai didi

python - 为什么这个 FormRequest 没有让我登录?

转载 作者:太空宇宙 更新时间:2023-11-03 17:36:48 25 4
gpt4 key购买 nike

这里是完整的 Python 新手,所以我可能会问一些非常明显的问题,但我已经搜索过这个网站、Scrapy 文档和 Google,我完全陷入了这个问题。

本质上,我想使用 Scrapy 的 FormRequest 登录到网站,以便我可以从各个页面抓取并保存一些统计信息。问题是,我在提交表单后从网站收到的响应只是将我返回到主页(响应正文中没有任何登录错误通知)。我不确定我是如何搞砸这个登录过程的。虽然它是一个弹出登录表单,但我认为这不应该是一个问题,因为使用 Firebug,我可以提取嵌入在网页中的表单的相关 html 代码(和 xpath)。

感谢您的帮助。代码粘贴在下面(我替换了我的实际用户名和密码):

# -*- coding: utf-8 -*-
import scrapy

class dkspider(scrapy.Spider):

name = "dkspider"
allowed_domains = ["draftkings.com"]
start_urls = ['https://www.draftkings.com/contest-lobby']

def parse(self, response):
return scrapy.http.FormRequest.from_response(response,
formxpath = '//*[@id="login_form"]',
formdata = {'username' : 'myusername', 'password' : 'mypass'},
callback = self.started)

def started(self, response):
filename = 'attempt1.html'
with open(filename, 'wb') as f:
f.write(response.body)
if 'failed' in response.body:
print 'Errors!'
else:
print 'Success'

最佳答案

似乎您的参数不匹配(应该是 login 而不是 username),并且您在 formdata 中缺少其中一些参数。这是 firebug 在尝试登录时向我显示的内容:
Post parameters

似乎 layoutTypereturnUrl 可以直接硬编码,但 profilingSessionId 需要从页面源中检索。我检查了来源并在那里找到了这个:
html sessionid
所以你的蜘蛛应该看起来像这样:

def parse(self, response):
return FormRequest(
url='https://www.draftkings.com/account/login',
formdata={'login': 'login', # login instead of username
'password': 'password',
'profillingSessionId': ''.join(
response.xpath("//input[@id='tmxSessionId']/@value").extract()),
'returnUrl': '',
'layoutType': '2'},
callback=self.started)

def started(self, response):
# Reload the landing page
return Request(self.start_urls[0], self.logged_in)

def logged_in(self, response):
# logged in page here
pass

关于python - 为什么这个 FormRequest 没有让我登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31109375/

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