如何使用Python正则表达式从HTML链接中提取URL?
URL是统一资源定位符的首字母缩写;它用于标识互联网上的资源位置。例如,以下URL用于标识Google和Microsoft网站的位置:
https://www.google.com https://www.microsoft.com
URL由域名、路径、端口号等组成。可以使用正则表达式解析和处理URL。因此,如果要使用正则表达式,则必须在Python中使用re库。
示例
以下示例演示了URL:
URL: https://tutorialspoint.com/courses If we parse the above URL we can find the website name and protocol Hostname: tutorialspoint.com Protocol: https
正则表达式
在Python语言中,正则表达式是一种用于查找匹配字符串的搜索模式。
Python有四种用于正则表达式的函数:
search() - 用于查找第一个匹配项。
match() - 用于查找完全相同的匹配项。
findall() - 用于查找所有匹配项。
sub() - 用于将匹配模式的字符串替换为新的字符串。
如果要使用Python语言在URL中搜索所需的模式,可以使用re.findall()函数,这是一个re库函数。
语法
以下是Python中re.findall搜索函数的语法或用法:
re.findall(regex, string)
上述语法将字符串中所有不重叠的模式匹配项作为字符串列表返回。
示例
要提取URL,可以使用以下代码:
import re text= '<p>Hello World: </p><a href="https://tutorialspoint.com">More Courses</a><a href="https://tutorialspoint.com/market/index.asp">Even More Courses</a>' urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', text) print("Original string: ",text) print("Urls:",urls)
输出
以下是上述程序执行后的输出:
Original string: <p>Hello World: </p><a href="https://tutorialspoint.com">More Courses</a><a href="https://tutorialspoint.com/market/index.asp">Even More Courses</a> Urls: ['https://tutorialspoint.com', 'https://tutorialspoint.com/market/index.asp']
示例
以下程序演示如何从给定的URL中提取主机名和协议。
import re website = 'https://tutorialspoint.com/' #to find protocol object1 = re.findall('(\w+)://', website) print(object1) # To find host name object2 = re.findall('://www.([\w\-\.]+)', website) print(object2)
输出
以下是上述程序执行后的输出:
['https'] ['tutorialspoint.com']
示例
以下程序演示了构建路径元素的通用URL的用法。
# Online Python-3 Compiler (Interpreter) import re # url url = 'https://tutorialspoint.com/index.html' # finding all capture groups object = re.findall('(\w+)://([\w\-\.]+)/(\w+).(\w+)', url) print(object)
输出
以下是上述程序执行后的输出:
[('http', 'www.tutorialspoint.com', 'index', 'html')]
广告