无法从python web scraper获取数据,因为应用程序正在新窗口中打开页面

2024-05-19 00:21:45 发布

您现在位置: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

现在,我愿意做的任何事情都是创建一个软件来刮取这个网站或web应用程序

``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图像urldata网站链接login页面
1条回答
网友
1楼 · 发布于 2024-05-19 00:21:45

您不能在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)

或者,您可以在登录站点后使用自定义cookie,并在bot中使用它

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)

相关问题 更多 >

    热门问题