无法从python webscraper获取数据,因为应用程序正在newwind中打开页面

2024-06-01 00:06:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个网站,这是用JAVA创建的,它只允许你看到数据,一旦你登录。。 现在,当我登录它只是在新窗口中打开它的所有登录信息的网页,但当复制链接和粘贴在同一个窗口,它在这里的工作是一些图像

链接到登录页 https://agency-pia.crane.aero/ 登录页面图片 enter image description here

登录后出现的链接 https://agency-pia.crane.aero/JSF/RezvEntry.xhtml?faces-redirect=true 登录后出现的图像 enter image description here

现在,我愿意做的任何方式是创建一个软件,刮这个网站或网络应用程序

``import requests
from bs4 import BeautifulSoup

headers = {
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}

login_data = {
    'name': '<username>',
    'pass': '<password>',
    'form_id': 'new_login_form',
    'op': 'Login'
}

with requests.Session() as s:
    url = 'https://agency-pia.crane.aero/'
    r = s.post(url, data=login_data, headers=headers)
    print(r.text)
    url = 'https://agency-pia.crane.aero/JSF/RezvEntry.xhtml?faces-redirect=true'
    r = s.get(url, headers=headers)``

所以我用python创建了一个应用程序,但我无法让它工作,它登录正常,但没有真正得到登录后的另一个页面

我什么都试过了,但我不知道我做错了什么

我想要的是,当我登录,然后我应该访问任何网页从网站


Tags: https图像url网页data网站链接login
1条回答
网友
1楼 · 发布于 2024-06-01 00:06:43

不能在login_data={}中指定像namepass这样的随机名称。它应该是网站HTML中的确切值。而且,你不能只发送一个POST请求到站点并期望它让你登录它应该包含<form>标签action值(在你的例子中是action="MemberRezvEntry.jsp"),而且每个隐藏的输入都应该包含在有效负载中以防止任何可能的错误

import requests
s = requests.Session()
payload = {'ORACLE_DEBUG_MODE':'','paxInfo':'','USERNAME': 'name', 'PASSWORD': 'pswd123'}
r = s.post('https://agency-pia.crane.aero/MemberRezvEntry.jsp', data=payload)
result = s.get(' https://agency-pia.crane.aero/JSF/RezvEntry.xhtml?faces-redirect=true').text
print(result)

或者您可以在登录到您的站点并在bot中使用自定义cookie

url = 'https://agency-pia.crane.aero/JSF/RezvEntry.xhtml?faces-redirect=true'
headers = {'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36'}
cookies = {#custom cookies from browser}

s = requests.Session()
r = s.post(url, headers=headers, cookies=cookies)

相关问题 更多 >