element.get_text()
Соединения отдельные строки пробегов; от documentation:
Если вы хотите только текстовую часть документа или тега, вы можете использовать метод get_text(). Она возвращает весь текст в документе или под тегом, в виде одной строки Unicode
курсив мой.
Используйте Tag.strings
generator, если вы хотите, чтобы отдельные строки:
>>> list(soup.find_all('td', class_='location')[0].strings)
[u'\n', u'\n TRACY,', u'\xa0CA\xa095304\xa0\n ']
Если вы хотите LXML присоединиться текст, а затем просто присоединиться текст:
r = ''.join(tree.xpath('//td[@class="location"]/p/text()'))
string()
XPath function может сделать то же самое для <td>
тег:
r = tree.xpath('string(//td[@class="location"])')
Демонстрация:
>>> ''.join(tree.xpath('//td[@class="location"]/p/text()'))
u'\n TRACY,\xa0CA\xa095304\xa0\n '
>>> tree.xpath('string(//td[@class="location"])')
u'\n \n TRACY,\xa0CA\xa095304\xa0\n '
Я хотел бы использовать str.strip()
на любом результате:
>>> tree.xpath('string(//td[@class="location"])').strip()
u'TRACY,\xa0CA\xa095304'
>>> print tree.xpath('string(//td[@class="location"])').strip()
TRACY, CA 95304
или использовать normalize-space()
XPath function:
>>> tree.xpath('normalize-space(string(//td[@class="location"]))')
u'TRACY,\xa0CA\xa095304\xa0'
str.strip()
Обратите внимание, что снимает заднее неразрывное \xa0
пространства, в то время как листы normalise-space()
Это.
Я ищу одну строку из LXML , а не для дальнейшего разделения результата bs. «Есть ли лучший способ извлечь местоположение с помощью lxml?» – foosion
@foosion: ах, действительно, читал слишком быстро. –
Спасибо за попытку – foosion