проблема списка нежелательных типов при очистке веб-страницы - PullRequest
0 голосов
/ 07 января 2019

Этот вопрос является своего рода продолжением предыдущего вопроса, который я задавал.

Очистка данных с сайта http & javaScript

Появились новые ошибки, поэтому я застрял на них прямо сейчас.

Код такой же, как и в предыдущем вопросе, что-то вроде

cothesAmz_item = ClothesItem()
    #info de producto
    script = response.xpath('//script/text()').extract()
    data = re.findall(script, '(\{.+?\}_')

    d = json.loads(data[0])

    cothesAmz_item['nombreProducto'] = response.xpath('normalize-space(//span[contains(@id, "productTitle")]/text())').extract()

    yield cothesAmz_item    

Я попытался напечатать скрипт, и он работает, это огромный объем текста, но он что-то печатает.

У меня сейчас проблема с регулярным выражением. Когда код достигает

data = re.findall(script, '(\{.+?\}_')

То, что должно заключать в «данные» все, что заключено в квадратные скобки, я получаю ошибку «список» нечитаемого типа.

С этим я хочу, пройдя

d = json.loads(data[0])

Получить своего рода словарь, в котором я смогу извлечь данные со страницы

Эта ошибка происходит из-за неправильного использования re.findall или она где-то еще в коде? (возможно, есть более простой способ добиться этого)

Спасибо за помощь!

1 Ответ

0 голосов
/ 07 января 2019
Функция

re.findall принимает оба значения arguments как string, но

script = response.xpath('//script/text()').extract()

возвращает список.

если в списке скриптов используется более одного элемента:

script = ' '.joins(script)    #convert list to string

если это единственный элемент в списке, то:

data = re.finall(script[0], 'your regex').
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...