抓取“ __hpKey”的网站,然后在python中使用请求和beautifulsoup登录

斯图尔特

这是我的第一个编码项目,因此我可能不正确理解所有术语。我正在尝试使用python中的请求和BeautifulSoup库登录NHS献血网站。我已经设法做到了,但是仅当我使用从浏览器的“网络”选项卡中从“登录标题”复制并粘贴的“ __hpKey”值时,该方法才有效。我希望能够抓取该网站以找到此令牌,而不必使用我复制并粘贴的令牌。

我设法找到了'__hpKey',但是尝试登录时此键似乎不起作用。

s = requests.session()
soup_key = BeautifulSoup(s.get('https://my.blood.co.uk/Account/SignIn').content, 'html.parser')
key = soup_key.find('input', {'name': '__hpKey'})['value']

我刚刚从网络登录选项卡中输入了“密钥”值,因为使用上面的代码无法成功登录。我缩小了传递给登录门户所需的四个元素。这些是:

data = {
  'LoginEmailAddress': 'email',
  'LoginPassword': 'password',
  'Question-Reason': '',
  '__hpKey': 'key'                ## 'key' is a 216 character key ending in ==

然后,我将这4个元素传递到登录门户,并使用BeautifulSoup解析带有我的捐助者资料的网页标题。标题让我知道它是否已成功登录。

login_req = s.post('https://my.blood.co.uk/Account/Login', data=data)
soup = BeautifulSoup(s.get('https://my.blood.co.uk/Home/Landing?load=Yourdonations').content, 'html.parser')
print(soup.title)       # If logged in prints "My Donor Record", else prints "My Donor Record - Sign in or Register"

因此,如何找到传递给登录门户的'__hpKey'值?

谢谢

贝特朗·马特尔

请求中包含一些验证字段。这些字段位于input表单的隐藏标记中。最快的方法是在表单下获取所有输入并按原样发送所有输入:

import requests
from bs4 import BeautifulSoup

s = requests.Session()

email = "[email protected]"
password = "your_password"

r = s.get("https://my.blood.co.uk/Account/SignIn")
soup = BeautifulSoup(r.text, "html.parser")
form = soup.findAll("form")[1]

payload = dict([
    (t["name"],t["value"]) 
    for t in form.findAll("input")
    if t.has_attr("value")
])
payload["Type-Fax"] = "" # maybe not necessary ?
payload["LoginEmailAddress"] = email
payload["LoginPassword"] = password

print(payload)
r = s.post("https://my.blood.co.uk/Account/Login", data = payload)

soup = BeautifulSoup(s.get('https://my.blood.co.uk/Home/Landing?load=Yourdonations').content, 'html.parser')
print(soup.title)

请注意,我尚未使用有效的帐户测试以上代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何抓取使用BankID进行Python登录的网站(BeautifulSoap,请求)?

来自分类Dev

抓取,抓取链接,然后抓取页面

来自分类Dev

抓取请求

来自分类Dev

使用BeautifulSoup抓取特定网站

来自分类Dev

使用登录信息通过python抓取网站

来自分类Dev

如何使用请求和Beautiful Soup抓取使用javascript的网站?

来自分类Dev

使用请求和 BeautifulSoup 抓取重定向的站点

来自分类Dev

Python BeautifulSoup抓取表

来自分类Dev

Python BeautifulSoup抓取表

来自分类Dev

python BeautifulSoup表抓取

来自分类Dev

Python BeautifulSoup网络抓取

来自分类Dev

python BeautifulSoup表抓取

来自分类Dev

Python 网页抓取登录

来自分类Dev

使用BeautifulSoup抓取网页

来自分类Dev

使用 BeautifulSoup 抓取网页

来自分类Dev

使用 BeautifulSoup 抓取 HTML

来自分类Dev

无法使用python抓取网站

来自分类Dev

使用BeautifulSoup Python抓取网页

来自分类Dev

使用BeautifulSoup Python抓取网页

来自分类Dev

使用Python请求抓取页面

来自分类Dev

使用 python 请求抓取 json

来自分类Dev

通过登录网站进行python网络抓取

来自分类Dev

使用BeautifulSoup网站抓取IMDb页面

来自分类Dev

使用BeautifulSoup 4.8.2从网站抓取表格

来自分类Dev

使用 BeautifulSoup 从网站抓取数据的问题

来自分类Dev

无法使用beautifulsoup抓取日本网站

来自分类Dev

抓取按FIFO顺序抓取的请求

来自分类Dev

当网站阻止不抓取内容时,如何使用Python抓取?

来自分类Dev

使用python抓取库推荐来抓取银行网站