Невозможно получить данные из Python Web Scrapper, потому что приложение открывает страницу в новом окне - PullRequest
0 голосов
/ 20 июня 2019

У меня есть этот веб-сайт, созданный в JAVA, и он позволяет вам видеть данные только после того, как вы вошли в систему .. Теперь, когда я захожу на сайт, просто открываю страницу в новом окне со всей зарегистрированной информацией, но затем, когда копируешь ссылку и вставляешь в то же окно, это работает, вот некоторые изображения ..

Ссылка на страницу входа https://agency -pia.crane.aero / Изображение страницы входа enter image description here

Ссылка, которая появляется после входа в систему https://agency -pia.crane.aero / JSF / RezvEntry.xhtml? Лица переадресацией = верно изображение, которое появляется после входа в систему 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, но не могу заставить его работать, оно входит в систему, но на самом деле не получает другую страницу, которая появляется после входа в систему.

Я попробовал все, но я не знаю, что я делаю не так ..

Что я хочу, так это когда я войду в систему, тогда я получу доступ к любой странице с веб-сайта ..

1 Ответ

0 голосов
/ 20 июля 2019

Вы не можете назначать случайные имена, такие как name и pass в login_data={}. Это должно быть точное значение в HTML-коде сайта. А также вы не можете просто отправить запрос POST на сайт и ожидать, что он войдет в ваш аккаунт, должен содержать значение <form> tags '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 после входа на свой сайт и использовать его в своем боте

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...