在html表中的td节点下递归搜索文本

时间:2018-04-13 02:54:53

标签: python xpath web-crawler lxml

我正在使用Python抓取一个html表。到目前为止,我已成功解析了表格:

root = etree.fromstring(browser.page_source, etree.HTMLParser())
rows = root.xpath("//table[@class='ms-listviewtable']/tbody/tr")

现在我想用for循环逐行解析每一列:

for row in rows:
    cols = row.xpath("./td")
    texts = [col.xpath("./findtextforme()") for col in cols)]
    # findtextforme() is a imaginary functionality

为什么我不能col.xpath("./text()")col.findtext("./")?因为他们放置文本的地方在该表的列中甚至列中都不一致,包括td/text()td/div/a/text()td/div/font/text()td/div/div/text()等等。

因此,我想要一些可以递归查找给定td节点下的文本的东西。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用.text_content()聚合HTML元素的“文本”:

  

返回元素的文本内容,包括其子元素的文本内容,没有标记。

texts = [col.text_content() for col in cols]