使用 Python 中的正则表达式和 urllib 解析网站
网页抓取是一种从网站提取数据的强大技术,可以实现自动数据提取和分析。得益于其强大的模块生态系统,Python 提供了多种工具来简化网页抓取工作。urllib 和 re(正则表达式)库是两个常用于在线抓取的库。
名为 urllib 的 Python 模块允许获取网页内容、处理 URL 和发送 HTTP 请求。它提供了一种连接 Web 服务器、打开 URL 和从网页获取 HTML 的简单方法。另一方面,内置 Python 模块 re 支持正则表达式,即用于构建搜索模式的字符序列。
在本文中,我们将专注于使用 urllib 和 re 来解析网站并检索相关数据。我们将研究两种仅依赖于这些库的方法,并展示如何使用正则表达式从网页的 HTML 内容中获取指定的数据。
让我们看一下这两个例子 -
使用 Urlib 和 Regex 解析网站以获取网站标题
在此示例中,可以使用 urllib 获取网页的 HTML 内容,并定义一个通过正则表达式收集数据的模式。可以利用正则表达式匹配并提取 HTML 文本中所需的信息,为简单的网页抓取操作提供快速且适应性强的解决方案。
算法
使用 Python 中的正则表达式和 urlib 解析网站的算法如下 -
步骤 1 - 导入所需的库 urlib 和 re。
步骤 2 - 在 urllib.request() 的帮助下使用 urlopen() 打开 url,并检索 HTML 内容。
步骤 3 - 为 <title> 定义正则表达式模式标签。
步骤 4 - 搜索模式的所有出现位置
步骤 5 - 运行循环并打印所有匹配的标题。
示例
# 导入所需的库 import urllib.request import re # 打开 URL 并检索 HTML 内容 link = "https://www.tutorialspoint.com/index.htm" # 借助 urllib.request 的 urlopen() 获取 URL retrieving = urllib.request.urlopen(link) retrieved_content = retrieving.read().decode() # 定义正则表达式模式 pattern = r"<title>(.*?)</title>" # 搜索模式的所有出现位置 matches = re.findall(pattern, removed_content) # 处理提取的数据 for match in matches: print("Title:", match)
输出
Title: Online Courses and eBooks Library
使用 Urlib 和 Regex 解析网站以获取网站的 URL
在此示例中,使用 urllib 获取网页的 HTML 内容,并使用 re 定义特定的正则表达式模式。该模式用于从 HTML 页面中取出特定数据项,如 URL 或其他结构化数据。为了根据需要提取信息,此方法允许定制和适应性。
算法
下面给出了使用 Python 中的 regex 和 urlib 解析网站的算法 -
步骤 1 - 要使用 urlib 和 regex,请导入所需的库 urlib 和 re。
步骤 2 - 借助 urllib.request(),使用 urlopen() 函数打开 URL,并检索 HTML 内容。
步骤 3 - 借助 href 标记为 url 定义正则表达式模式。
步骤 4 - 搜索模式的所有出现位置
步骤 5 - 运行循环并打印所有匹配标题。
示例
import urllib.request import re # 打开 URL 并检索 HTML 内容 link = "https://www.tutorialspoint.com/index.htm" # 借助 urllib.request 的 urlopen() 获取 URL retrieving = urllib.request.urlopen(link) retrieved_content = retrieving.read().decode() # 定义所需的正则表达式模式 pattern = r"<a href="(.*?)">" # 搜索模式的所有出现位置 matches = re.findall(pattern, removed_content) # 处理提取的数据后显示 for match in matches: print("URL:", match)
输出
URL: All the url’s of the website
结论
在本文中,我们分析了两个仅使用 urllib 和重新打包的 Python 网站解析示例。第一个示例展示了如何使用正则表达式提取网页标题。第二个示例演示了如何使用特定的正则表达式模式从锚标记中提取 URL。这些方法为需要从 HTML 文本中提取模式的简单 Web 抓取应用程序提供了快速解决方案。但是,请务必记住,当模式匹配需要更复杂的方法时,正则表达式可能不适合管理复杂的 HTML 结构或情况。