我正在尝试编写一个简单的抓取工具,该工具将从网页中提取特定的URL。该页面有许多URL,但我想获得以一组特定字符结尾的URL。
例如,如果在页面源代码中的某个位置有一个如下所示的 URL:
source: "https://www.website.com/dog.pdf"
我想返回不带引号的https://www.website.com/dog.pdf
。如果有多个匹配项,我只想返回第一个。
因此,正则表达式应该提取source:
之后的所有内容,直到并包括.pdf"
--
我看过其他问题,但大多数答案拒绝提供正则表达式,而是说使用startswith()
和endswith()
.但是由于页面源可能很大,我担心性能。不过,我是Python的新手,也许我只是不明白如何使用这些方法。
你去吧
import re
example = '''
source: "https://www.website.com/dog.pdf"
source: "https://www.website.com/cat.pdf"
'''
pattern = r'"(?P<url>.+?)"'
m = re.search(pattern, example)
url = m.group('url') # result is https://www.website.com/dog.pdf
上。
要返回双引号中的第一个链接,正则表达式将如下所示:
pattern = r'"(?P<url>https?://.+?)"'
如果需要在双引号中找到以.pdf
结尾的第一个链接,则正则表达式将如下所示:
pattern = r'"(?P<url>https?://.+?.pdf)"'