Finding all links matching specific URL template in an HTML page
所以假设我有以下基本 url
我可以使用 xpath 来匹配模板的一部分
谢谢。
编辑。我在示例页面上对其进行了计时。通过我的互联网连接和 100 次试验,迭代平均需要 0.467 秒,BeautifulSoup 需要 0.669 秒。
如果你有 Scrapy,它也可以使用 Selectors。
1 2 3 | 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
您不能使用
相反,您可以使用
1 2 3 4 5 6 7 8 9 10 | import re import lxml.html tree = lxml.html.fromstring(data) pattern = re.compile("http://example.com/Stuff/preview/v/\\d+/fl/1/t/") for element, attribute, link, pos in tree.iterlinks(): if not pattern.match(link): continue print link |
另一种选择是使用
1 2 3 4 5 6 7 8 | import re from bs4 import BeautifulSoup data ="your html" soup = BeautifulSoup(data) pattern = re.compile("http://example.com/Stuff/preview/v/\\d+/fl/1/t/") print soup.find_all('a', {'href': pattern}) |
为了使
1 | soup = BeautifulSoup(data,"lxml") |
此外,您可以使用
希望对您有所帮助。