我正在使用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节点下的文本的东西。我怎样才能做到这一点?
答案 0 :(得分:0)
您可以使用.text_content()
聚合HTML元素的“文本”:
返回元素的文本内容,包括其子元素的文本内容,没有标记。
texts = [col.text_content() for col in cols]