Дополнительные символы, извлеченные XPath и Python (HTML)

StackOverflow https://stackoverflow.com/questions/2909067

  •  04-10-2019
  •  | 
  •  

Вопрос

Я использовал XPath с помощью SCHAPY для извлечения текста из тегов HTML онлайн, но когда я получаю дополнительные символы. Пример пытается извлечь номер, как «204» из <td> тег и получение [u'204']. Отказ В некоторых случаях гораздо хуже. Например, пытаясь извлечь «1 - Makoverflow» и вместо этого получается [u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t ']. Отказ Есть ли способ предотвратить это или обрезать строки так, чтобы дополнительные символы не были частью строки? (Использование элементов для хранения данных). Похоже, у него есть что делать с форматированием, так как я могу получить XPath, чтобы не поднять это?

Это было полезно?

Решение

Как выглядит линию кода, которая возвращается [u'204']? Похоже, что возвращается, это список Python, содержащий строку Unicode с нужным вами значением. Ничто не воннет там - просто индекс. Что касается возврата каретки, линейных префидов и вкладки, как только что ответили Wai Yip Tung, поднят их.

Наверное

my_answer = item1['Title'][0].strip()

Или если вы ожидаете несколько матчей

for ans_i in item1['Title']:
    do_something_with( ans_i.strip() )

Другие советы

Стандартная функция XPath normalize-space() имеет именно то нужный эффект.

Он удаляет ведущее и затягивающее пространство Wite и заменяет любое внутреннее пробелование только одним пространством.

Итак, вы могли бы использовать:

normalize-space(someExpression)

Используйте полоску () для удаления ведущих и задних белых пробелов.

>>> u'\r\n\t\t 1 \u2013 MathOverflow\r\n\t\t '.strip()
u'1 \u2013 MathOverflow'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top