Как мне конвертировать javascript postData в список Python? - PullRequest
0 голосов
/ 27 сентября 2018

Я использую Scrapy для имитации пост-запроса со страницы.Необходимо получить значения полезной нагрузки из следующей выдержки.Мне нужно получить значения (postData) из этой конструкции JS в список Python.

<a style="color: red;font-size: 12px;font-weight: bolder" target="_self" title="Click here for processing" onclick="return postData('714','714','null','','','TADIKONDA','0713006','TADIKONDA','','1044','EXE DNO 1046 LAND','KARLAPUDI ROSAIAH, EEDA ANJI REDDY LAND','EXE BALANCE LAND','NANDIPATI VENKATESWARLU ETC LAND','0','0','01/01/1983','25/09/2018','t','16/02/2018','1')" href="#"> Next</a>

Какой тип данных это postData?

Итак, что я делаювыглядит следующим образом:

s = response.xpath("//td[@class = 'formbg1']/a/@onclick").extract()[0].split('Data')[1][1:-1].replace("'","").split(',')

, который возвращает список.Проблема, однако, заключается в том, что одно из значений содержит ,, поэтому оно разбито на два отдельных значения в списке, что не годится.Подобно этому, предполагается, что это одно значение списка, но кажется, что оно равно 2.

,'KARLAPUDI ROSAIAH, EEDA ANJI REDDY LAND',

Так как же преобразовать этот postData в список python, сохранив все значения такими, какие они есть?

1 Ответ

0 голосов
/ 27 сентября 2018

Это не тип данных, это произвольная функция javascript, определяемая страницей, с которой вы работаете, и значения здесь являются аргументами той функции, которая вызывается при щелчке по ссылке.Вы можете немного разобрать его «вручную», чтобы увидеть его как json, например так:

my_list = json.loads('[' + extracted_raw_string[16:-1].replace("'", '"') + ']')

Не очень надежный, но делает трюк, потерпит неудачу, если в строке есть дополнительные двойные / одинарные кавычкиценности.В противном случае проверьте js2xml или slimit для анализа javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...