Я создал парсер, который работает до определенного момента: он переходит к списку записей, анализирует записи до ключевых для дальнейшего сканирования, переходит к этим отдельным записям, но не может анализировать таблицы в записях, потому что они загружены через JavaScript. JavaScript выдает запрос POST
(xmr) для их заполнения. Поэтому, если JavaScript не включен, он возвращает что-то вроде «Записей не найдено».
Итак, я прочитал этот вопрос: Ссылка
Я проверил заголовки запросов с помощью разработчика браузера. инструменты. Заголовки включают в себя:
fetch("https://example.com/Search/GridQuery?query=foo", {
"headers": {
"accept": "text/plain, */*; q=0.01",
"accept-language": "en-US,en;q=0.9,es;q=0.8",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"pragma": "no-cache",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-requested-with": "XMLHttpRequest"
},
"referrer": "https://example.com/SiteSearch/Search?query=bar",
"referrerPolicy": "no-referrer-when-downgrade",
"body": "page=1&size=10&useFilters=false",
"method": "POST",
"mode": "cors",
"credentials": "include"
});
Браузер указывает на готовку ie, хотя не выводится копированием выборки ... Затем я попробовал следующее:
url = response.urljoin(response.css('div#Foo a::attr(href)').get())
yield Request(url=url,
method='POST',
body='{"filters": ["page": "1", "size": "10", "useFilters": "False"]}',
headers={'x-requested-with': 'XMLHttpRequest'},
callback=self.parse_table)
Я получаю ответ, но он по-прежнему говорит: «Записи не найдены». Итак, запрос POST
работает неправильно.
Нужно ли мне помещать все в заголовок запроса? Как определить, что нужно включить? Требуются ли файлы cookie?