Scrapy. Как передать дубликаты в body, используя scrapy.Request()?
Есть сайт, с которого получаю json через API. Столкнулся с тем, что используя requests я могу получить данные, а используя те же параметры в scrapy - получаю пустой ответ. Опытным путем удалось выяснить, что всё дело в дубликатах, которые находятся в теле запроса. Requests судя по всему передает их и получает данные, а scrapy удаляет дубликаты из запроса. Есть ли возможность пробросить в тело дубликаты? пробовал так же через scrapy.http.JsonRequest
class MainSpider(scrapy.Spider):
name = 'main'
allowed_domains = ['ukonlinestores.co.uk']
# start_urls = ['https://ukonlinestores.co.uk/amazon-uk-sellers/']
search_url = 'https://ukonlinestores.co.uk/wp-admin/admin-ajax.php?action=get_wdtable&table_id=9'
handle_httpstatus_list = [400]
def parse_search(self, response):
inspect_response(response, self)
def start_requests(self):
headers = {
'authority': 'ukonlinestores.co.uk',
'accept': 'application/json, text/javascript, */*; q=0.01',
'dnt': '1',
'x-requested-with': 'XMLHttpRequest',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
'origin': 'https://ukonlinestores.co.uk',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
'referer': 'https://ukonlinestores.co.uk/amazon-uk-sellers/',
'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
}
data = {
'draw': '2',
'columns[0][data]': '0',
'columns[0][name]': 'wdt_ID',
'columns[0][searchable]': 'true',
'columns[0][orderable]': 'true',
'columns[0][orderable]': 'true',
'columns[0][search][value]': '',
'columns[0][search][value]': '',
'columns[0][search][regex]': 'false',
'columns[0][search][regex]': 'false',
'columns[1][data]': '1',
'columns[1][data]': '1',
'columns[1][name]': 'sellerid',
'columns[1][name]': 'sellerid',
'columns[1][searchable]': 'true',
'columns[1][searchable]': 'true',
'columns[1][orderable]': 'true',
'columns[1][orderable]': 'true',
}
yield scrapy.Request(
self.search_url,
callback=self.parse_search,
method='POST',
headers=headers,
body=json.dumps(data))
Параметры сократил. В requests если исключаю дубликаты, тело ответа так же приходит пустое. Ниже по телу запроса можно понять, что дубликатов в запросе нет.
>>> request.body
b'{"columns[0][data]": "0", "columns[0][name]": "wdt_ID", "columns[0][orderable]": "true", "columns[0][search][regex]": "false", "columns[0][search][value]": "", "co
lumns[0][searchable]": "true", "columns[10][data]": "10", "columns[10][name]": "positive12months", "columns[10][orderable]": "true", "columns[10][search][regex]": "f
alse", "columns[10][search][value]": "", "columns[10][searchable]": "true", "columns[11][data]": "11", "columns[11][name]": "positivelifetime", "columns[11][orderabl
e]": "true", "columns[11][search][regex]": "false", "columns[11][search][value]": "", "columns[11][searchable]": "true", "columns[12][data]": "12", "columns[12][name
]": "count30day", "columns[12][orderable]": "true", "columns[12][search][regex]": "false", "columns[12][search][value]": "", "columns[12][searchable]": "true", "colu
mns[13][data]": "13", "columns[13][name]": "count90day", "columns[13][orderable]": "true",