gpt4 book ai didi

python - Scrapy 登录适用于某些网站,但不适用于其他网站

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:41 24 4
gpt4 key购买 nike

我可以使用下面的代码登录 Github。但是当我用同样的代码尝试其他网站时,它仍然停留在登录页面,它没有登录。我错过了什么吗?

  • Github
class GithubSpider(scrapy.Spider):

name = 'test'
start_urls = ['https://github.com/login']

def parse(self, response):
token = response.css('form input::attr(value)').extract_first()
return FormRequest.from_response(response,
formdata=
{
'csrf_token': token,
'login': '*******',
'password': '*******'
},
callback=self.start_scraping)

def start_scraping(self, response):
open_in_browser(response)
print('yes')
  • 航空公司网站
class AirlineSpider(scrapy.Spider):

name = 'test'
allowed_domains = ['hawaiianairlines.com']
start_urls = ['https://www.hawaiianairlines.com/my-account/login/']

def parse(self, response):
token = response.css('form input::attr(value)').extract_first()
return FormRequest.from_response(response,
formdata=
{
'csrf_token': token,
'UserName': '*********',
'Password': '*********'
},
callback=self.start_scraping)

def start_scraping(self, response):
open_in_browser(response)
print('yes')

最佳答案

查看您提供的网站来源,您可以在此处找到表单字段:

<form id="login" ng-submit="login.$valid && submitLogin()" onsubmit="return false" novalidate="" name="login" method="post">

这部分,特别是 onsubmit="return false" 部分,告诉您浏览器永远不会通过通常的方法将此表单提交给“href”目标,并且(除非您测试过没有启用 javascript 的表单并且它可以工作)这个网站可能只在支持 javascript 的浏览器中工作。

然后要了解表单实际上是如何通过 XHR 提交的,您需要在网站的 javascript 代码中找到并分解 submitLogin() 函数,并在您的代码中模拟它.

另一种选择是使用带有 scrapy 的 javascript 引擎,它可以为您处理脚本,但缺点是需要更多资源并且可能难以设置。

关于python - Scrapy 登录适用于某些网站,但不适用于其他网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57929715/

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