Python 登录到scrape-获取真实性令牌,但生成的html用于登录页面而不是目标页面-我做错了什么?
我才刚刚开始,为了好玩/练习,我想我应该尝试每天自动下载我的股票投资组合余额——将数据存储在某个地方,并以图表的形式呈现出来——一种“尝试一切”的个人项目 Anyhoo-为了获得我需要的值-我需要使用电子邮件和密码登录-该页面还有一个真实性标记(你可以在html中看到),我知道了如何获取。我发布包含电子邮件、密码和令牌的有效负载,打印令牌(以检查每次的变化,因此很可能是新生成的),然后尝试使用每日余额访问页面并刮取总数 我现在得到的是原始的登录页面!正如我所说,我对这方面还不熟悉,所以这是从我遇到的不同例子中拼凑而成的 问题是没有错误——所以这在某个地方是一个逻辑问题,因为我不完全理解我在做什么,所以我有点迷路了 感谢您的建议/解决方案等 代码如下:Python 登录到scrape-获取真实性令牌,但生成的html用于登录页面而不是目标页面-我做错了什么?,python,authentication,web-scraping,Python,Authentication,Web Scraping,我才刚刚开始,为了好玩/练习,我想我应该尝试每天自动下载我的股票投资组合余额——将数据存储在某个地方,并以图表的形式呈现出来——一种“尝试一切”的个人项目 Anyhoo-为了获得我需要的值-我需要使用电子邮件和密码登录-该页面还有一个真实性标记(你可以在html中看到),我知道了如何获取。我发布包含电子邮件、密码和令牌的有效负载,打印令牌(以检查每次的变化,因此很可能是新生成的),然后尝试使用每日余额访问页面并刮取总数 我现在得到的是原始的登录页面!正如我所说,我对这方面还不熟悉,所以这是从我遇
import requests
from lxml import html
import time
#open session
session_requests = requests.session()
#load info for login
payload = {
'email':'mymail@gmail.com',
'password':'mypassword',
'authenticity_token':'CSRF_TOKEN'
}
#describe login and portfolio balance page
login_url = 'https://dadada.com/login'
portfolio = 'https://dadada.com/my_one/portfolio'
#get login page
result = session_requests.get(login_url)
#obtain authenticity token
tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='authenticity_token']/@value")))[0]
#check authenticity token obtained
print(authenticity_token)
post = session_requests.post(
login_url,
data = payload,
)
time.sleep(20)
r = session_requests.get(portfolio)
print(r.text)`
在最后的GET请求中,您只提供一个url作为参数。我的猜测是,您需要以某种方式将
真实性\u令牌
告知服务器。让它知道,它仍然是你。您可以尝试通过浏览器正常登录,并在登录POST
后在GET
上检查HTTP标题
和cookie。可能令牌位于头中或保存在某些cookie中,而您的代码中没有这种情况。非常感谢。我原以为,通过将真实性令牌作为有效负载的一部分发布,我是在向服务器提供建议。在正常登录中,header中包含一个Authentity令牌。meta name=“csrf param”content=“Authentity\u token”/>因此我可以将其作为附加参数添加到get请求中?将尝试一下。无法使用headers={'csrf-param':'authenticity\u token','csrf token':authenticity\u token}r=session\u requests.get(公文包,headers=headers)来实现这一点,因此没有进一步的问题。