У меня есть Python3 Scraper, который делает запрос XMLHttpRequest для одного сайта (например, https://www.immowelt.de/liste/bl-nordrhein-westfalen/haeuser/mieten?sort=relevanz), который отлично работал в течение нескольких месяцев:
import requests
def get_offset_urls_source_code(bl_code, object_type_code, purpose_code, max_objects):
payload = {'query': f"geoid={bl_code}&etype={object_type_code}&esr={purpose_code}&sort=relevanz", 'offset': '0',
'pageSize': f'{max_objects}'}
r = requests.post(
url='https://www.immowelt.de/liste/getlistitems',
data=payload,
headers={'X-Requested-With': 'XMLHttpRequest'}
)
code = r.text
r.close()
return code
#Example Values:
bl_code = 10805 #it is actually a value from a DF, that's why I had to wrap int around it below
object_type_code = 2 #same here
purpose_code = 2 #same here
max_objects = 10 #same here
response_code = get_offset_urls_source_code(bl_code=int(bl_code),
object_type_code=int(object_type_code),
purpose_code=int(purpose_code),
max_objects=int(max_objects)
)
response_code
что приводит к:
'Bad Request'
Когда я go на упомянутый выше Веб-сайт и открываю инструменты разработчика с помощью Google Chrome и прокручиваю страницу вниз, я вижу сообщение XHR. Изучая детали, я не могу обнаружить никаких изменений в «форме данных», поэтому мне интересно, почему я получаю плохие запросы, когда выполняю запрос с python в течение 3 дней. Попытка преобразовать dict с помощью json (согласно некоторым другим сообщениям) также не помогает.
Что-то, что мне нужно добавить в мой запрос? Должен ли я заполнить все пары ключ-значение заголовков? Что меня интересует, потому что раньше мне это не было нужно. Есть идеи?