Таблица POST-запросов Python3 - PullRequest
1 голос
/ 20 апреля 2019

Я пытаюсь очистить таблицу от https://www.domeinquarantaine.nl/,, но по какой-то причине она не дает ответ таблицы

#The parameters
baseURL = "https://www.domeinquarantaine.nl/tabel.php"
PARAMS = {"qdate": "2019-04-21", "pagina": "2", "order": "karakter"}
DATA = {"qdate=2019-04-21&pagina=3&order="}
HEADERS = {"Host": "www.domeinquarantaine.nl",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0",
"Accept": "*/*",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"Referer": "https://www.domeinquarantaine.nl/",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"X-Requested-With": "XMLHttpRequest",
"Content-Length": "41",
"Connection": "keep-alive",
"Cookie": "_ga=GA1.2.1612813080.1548179877; PHPSESSID=5694f8e2e4f0b10e53ec2b54310c02cb; _gid=GA1.2.1715527396.1555747200"}

#POST request
r = requests.post(baseURL, headers = HEADERS, data = PARAMS)

#Checking the response
r.text

Ответ состоит из странных токенов и вопросительных знаков

Итак, мой вопрос, почему он возвращает этот ответ?И как это исправить, чтобы в итоге получилось заскребать стол?

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Откройте веб-браузер, отключите JavaScript, и вы увидите, что может получить requests.

Но, используя DevTools в Chrome / Firefox (вкладка Network, фильтр XHR запросов), вы должны увидеть POST-запрос к URL https://www.domeinquarantaine.nl/tabel.php, и он отправит обратно HTML с таблицей.

Если вы откроете этот URL в браузере, то увидите таблицу - так что вы можете получить событие с помощью GET, но используя POST, вы, вероятно, сможете фильтровать данные.


После написания этого объяснения я увидел, что у вас уже есть этот URL в коде - вы не упомянули его в описании.

У вас другая проблема - вы установили

"Accept-Encoding": "gzip, deflate, br"

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

Или используйте

"Accept-Encoding": "deflate"

и сервер отправит несжатые данные, и вы увидите HTML с таблицей

0 голосов
/ 20 апреля 2019

Итак, есть несколько причин, по которым вы получаете то, что получаете:

  1. Ваши заголовки выглядят некорректно
  2. Отправляемые вами данные содержатнекоторые дополнительные переменные
  3. Веб-сайт требует файлы cookie для отображения таблицы

Это можно легко исправить, изменив переменные data и headers и добавив requests.session() вваш код (который будет автоматически собирать и вводить файлы cookie)

В целом ваш код должен выглядеть следующим образом:

import requests

session = requests.session()
headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0", "Accept": "*/*", "Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate", "Referer": "https://www.domeinquarantaine.nl/", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "X-Requested-With": "XMLHttpRequest", "DNT": "1", "Connection": "close"}
data={"qdate": "2019-04-20"}

session.get("https://www.domeinquarantaine.nl", headers=headers)
r = session.post("https://www.domeinquarantaine.nl/tabel.php", headers=headers, data=data)

r.text

Надеюсь, это поможет!

...