【发布时间】:2014-08-13 21:30:43
【问题描述】:
假设我有以下基本网址http://example.com/Stuff/preview/v/{id}/fl/1/t/。正在解析的页面上有许多具有不同 {id} 的 url。我想在 HTML 页面中找到与此模板匹配的所有链接。
我可以使用 xpath 仅匹配模板的一部分//a[contains(@href,preview/v] 或仅使用正则表达式,但我想知道是否有人知道使用 xpath 和正则表达式匹配整个模板的更优雅的方法,因此它快速且匹配绝对正确。
谢谢。
编辑。我在示例页面上对其进行了计时。通过我的互联网连接和 100 次试验,迭代平均需要 0.467 秒,BeautifulSoup 需要 0.669 秒。
另外,如果你有 Scrapy,它可以使用 Selectors。
data=get(url).text
sel = Selector(text=data, type="html")
a=sel.xpath('//a[re:test(@href,"/Stuff/preview/v/\d+/fl/1/t/")]//@href').extract()
平均时间也是 0.467
【问题讨论】:
标签: python regex xpath html-parsing lxml