【发布时间】:2018-04-13 02:54:53
【问题描述】:
我正在用 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 节点下递归查找文本的东西。我怎样才能做到这一点?
【问题讨论】:
标签: python xpath web-crawler lxml