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