python запросов не получают полную страницу - PullRequest
0 голосов
/ 26 февраля 2020

"" "ЭТО МОЙ КОД" ""

import requests
from bs4 import BeautifulSoup
import random
from selenium import webdriver
url ="http://www.yopmail.com/en/?smith"
request = requests.get(url)
soup = BeautifulSoup(request.text, 'html5lib')
print(soup)

"" "ЭТО ВОЗВРАЩАЕТ ЭТОТ ВЫХОД" ""

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
</head>
<body onload="document.getElementById('f').submit();">
<form action="." id="f" method="post">
<input id="yp" name="yp" type="hidden" value="XAQHlAwL5ZwL1ZQZlAGH3ZGV"/>
<input id="login" name="login" type="hidden" value="smith"/>
<input id="id" name="id" type="hidden" value=""/>
</form>
<noscript><br/><br/>  <strong>Your browser does not support javascript or it may be disabled</strong></noscript>

</body></html>

"" "Я ХОЧУ ВСЕ SR C КОД ВМЕСТО ЭТОГО "" "

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Я бы предпочел написать это как комментарий, а не как ответ, так как я только даю вам подсказку, но у меня недостаточно репутации, чтобы писать комментарии. Итак, вот мои два цента:

Обратите внимание на строки

<body onload="document.getElementById('f').submit();">
<form action="." id="f" method="post">

в этом HTML вашем источнике. Это может быть очень простая c защита от попыток очистки, как вы собираетесь делать, и может быть достаточно изменить вместо этого использование requests.get на requests.post; включая изменение GET-подобного параметра

/? smith

в URL-адресе для параметра POST.

Но точно также вы можете встретить даже Впрочем, больше кода, который требует от вас использования JavaScript. Проверьте другой ответ Basu_ C в этом случае.

0 голосов
/ 26 февраля 2020

Это происходит потому, что запрос получает источник до выполнения Javascript. Вы можете установить запросы - html и импортировать HTMLSession из запросов_ html. Поддерживаемые функции:

  • Полная поддержка JavaScript! * Селекторы
  • CSS (стиль jQuery, благодаря PyQuery). * Селекторы XPath
  • , для слабонервных.
  • Пересмотренный пользовательский агент (как настоящий веб-браузер).
  • Automati c следование перенаправлениям.
  • Соединение - объединение в пул и готовка ie настойчивость.
  • Запросы, которые вы знаете и любите, с магическими способностями разбора.
  • Asyn c Поддержка

Пример:

pip install requests-html

from requests_html import HTMLSession
from requests_html import AsyncHTMLSession

url2search = "https://******"
session = HTMLSession()
r = session.get(url2search)

Визуализация для JS как:

r.html.render()

Обратите внимание, что при первом запуске метода render () он загружает Chromium в ваш домашний каталог (например, ~ /. pyppeteer /). Это происходит только один раз. Вам также может понадобиться установить несколько пакетов Linux для работы pyppeteer.

Подробнее о этой ссылке .

...