получение всего содержимого html - PullRequest
0 голосов
/ 08 мая 2020

У меня проблема, когда я хочу отобразить HTML, используя python, вот результат:

enter image description here

И это оригинал из веб-сайт, и я хочу отобразить мой (используя python) как оригинал с помощью «Мои персонажи»:

enter image description here

Это источник кода:

result2 = scraper.get("https://www.dofus-touch.com/en/mmorpg/community/directories/character-pages/2225800401-kaidou",headers=heads)
    hugo = result2.content
    baba = BeautifulSoup(hugo, "html.parser")
    print(baba)

1 Ответ

1 голос
/ 08 мая 2020

Это потому, что вы вошли в свою учетную запись и можете видеть список имеющихся у вас символов.

С другой стороны, ваш скребок не имеет такой информации о вашей учетной записи, поэтому он рассматривается как гостевой пользователь без отображения списка символов.

Чтобы решить эту проблему, вам необходимо отправить запрос с правильными заголовками / файлами cookie, чтобы сообщить серверу, что это вы.

Краткое решение здесь - отслеживать сетевые запросы, когда вы открываете эту страницу и копируете этот c запрос как curl

enter image description here

Теперь, чтобы увидеть результаты визуально, давайте воспользуемся почтальоном

Сначала я сделаю запрос, как обычно, с URL-адресом https://www.dofus-touch.com/en/mmorpg/community/directories/character-pages/2225800401-kaidou

enter image description here

Как как видите, я еще не вошел в систему, потому что запросил страницу без заголовков. Теперь давайте попробуем снова использовать скопированный нами curl, выбрав импорт и вставив текст curl

enter image description here

Как видите, я вошел в систему как newguy5, это мое имя пользователя, с которым я только что создал учетную запись, к сожалению, у меня нет символов в моей учетной записи, но я предполагаю, что у вас есть.

Теперь мы хотим превратить это в код, мы можем использовать автомат c преобразование кода, предоставленное почтальоном, которое сгенерирует

import requests

url = "https://www.dofus-touch.com/en/mmorpg/community/directories/character-pages/2225800401-kaidou"

payload = {}
headers = {
  'authority': 'www.dofus-touch.com',
  'upgrade-insecure-requests': '1',
  'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36',
  'sec-fetch-dest': 'document',
  'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
  'sec-fetch-site': 'none',
  'sec-fetch-mode': 'navigate',
  'accept-language': 'en-US,en;q=0.9,ar;q=0.8,pt;q=0.7',
  'cookie': 'your_own_cookie_here',
  'Cookie': 'your_own_cookie_here'
}

response = requests.request("GET", url, headers=headers, data = payload)

print(response.text.encode('utf8'))

Я удалил свои значения файлов cookie, но ваши будут там, когда код будет сгенерирован.

Существуют более продвинутые подходы, которые пишет сценарий для автоматического входа в систему и получения этих файлов cookie, но я не уверен, нужно ли вам это в вашем сценарии использования, чтобы вы могли начать с того, что я объяснил выше, а затем, если строите его, как вы go.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...