Сначала переименуйте ваш метод синтаксического анализа в:
def start_requests(self):
При отправке формы вам следует использовать scrapy.FormRequest.Вы хотите использовать метод = post, только если у вас есть необработанное тело, которое вы хотите отправить.В этом случае это выглядит как данные ofrm, поэтому сделайте что-то подобное.
formdata = {
'requests': [{'indexName': 'listings',
'params': 'query=&hitsPerPage=24&page=0&highlightPreTag=__ais-highlight__&highlightPostTag=__%2Fais-highlight__&filters=announce_type%3Aproperty-announces%20AND%20language_code%3Apt%20AND%20listing_id%3A%205&facets=%5B%22announce_type%22%5D&tagFilters='}]
}
headers = {
'accept': 'application/json',
'content-type': 'application/x-www-form-urlencoded',
'Origin': 'https://www.flat.com.br',
'Referer': 'https://www.flat.com.br/search?query=',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
}
def start_requests(self):
for link in self.start_urls:
yield scrapy.FormRequest(link, headers=headers, formdata=formdata, callback=self.parse_page)
Есть и другие инструменты, которые вы можете использовать, такие как запрос формы из ответа, которые могут помочь в этом.Если вы хотите отправить необработанную строку json или что-то еще, вам нужно преобразовать свой словарь в строку, а затем установить метод на POST, как вы сделали здесь.FormRequest автоматически отправит запрос POST, и он может быть разумным, если вы используете функции ответа from.
Ссылки: https://docs.scrapy.org/en/latest/topics/request-response.html#request-subclasses