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