Web Scraper 高级用法——利用正则表达式筛选文本信息 | 简易数据分析 17

本文是简易数据分析系列第17篇,介绍如何使用正则表达式在Web Scraper中筛选文本信息。通过实例教学,包括正则表达式的字符簇、限定符等基础知识,并提供实战练习,帮助读者掌握正则表达式在数据提取中的应用。
摘要由CSDN通过智能技术生成

这是简易数据分析系列的第 17 篇文章。

原文首发于博客园:Web Scraper 高级用法——利用正则表达式筛选文本信息

学习了这么多课,我想大家已经发现了,web scraper 主要是用来爬取文本信息的。

在爬取的过程中,我们经常会遇到一个问题:网页上的数据比较脏,我们只需要里面的一部分信息。比如说要抓取 电影的评价人数,网页中抓到的原始数据是 1926853人评价,但是我们期望只抓取数字,把 人评价 这三个汉字丢掉。

这种类似的操作在 Excel 可以利用公式等工具处理,其实在 web scraper 里,也有一个利器,那就是正则表达式

正则表达式是一个非常强大工具,它主要是用来处理文本数据的,常用来匹配提取替换文本,在计算机程序中有非常广泛的应用。

web scraper 中也内置了正则表达式工具,但只提供了提取的功能。虽然功能有所残缺,对于 web scraper 使用者来说完全够用了,毕竟 web scraper 的定位就是不会写代码的小白,我们只需要学习最基础的知识就可以了。

1.正则表达式初尝

我们先用 web scraper 初步尝试一下正则表达式。这里还是用豆瓣电影做例子,我们先选择电影的评价人数,预览图是这个样子的:

Text 选择器有个 Regex 的输入框,这个就是输入正则表达式的地方。我们输入 [0-9],然后再点击预览,是这个样子的:

这时候你应该就明白了, [0-9] 就是匹配一个数字的意思。如果我们要匹配多个数字呢?很简单,后面再加个「

好的,以下是关于使用 Python 的 web scraper 爬取二级网页的简单教程: 1. 导入必要的库 在 Python 中,我们需要使用一些第三方库来实现网页爬取。其中,最为常用的包括 requests 和 BeautifulSoup。前者用于获取网页源代码,后者用于解析 HTML 代码。 ```python import requests from bs4 import BeautifulSoup ``` 2. 获取二级网页 要获取二级网页的内容,我们首先需要获取主网页的链接,然后使用 requests 库获取其源代码,进而找到所有二级网页的链接。我们可以使用 BeautifulSoup 库解析 HTML 代码,并使用 find_all 方法找到所有 a 标签中的 href 属性,即所有链接。 ```python # 获取主网页的链接 url = "https://example.com" response = requests.get(url) soup = BeautifulSoup(response.content, "html.parser") # 获取所有二级网页的链接 links = [] for link in soup.find_all("a"): href = link.get("href") if href.startswith("https://example.com/second-level"): links.append(href) ``` 这里我们假设所有二级链接都以 "https://example.com/second-level" 开头。 3. 爬取二级网页的内容 现在我们已经得到了所有二级网页的链接,接下来就可以依次爬取它们的内容了。和获取主网页的源代码类似,我们可以使用 requests 库获取每个二级网页的源代码,然后使用 BeautifulSoup 库解析 HTML 代码,找到我们需要的内容。 ```python # 爬取所有二级网页的内容 for link in links: response = requests.get(link) soup = BeautifulSoup(response.content, "html.parser") # 这里可以根据需要找到需要的内容 ... ``` 这里需要注意的是,每个二级网页的 HTML 代码可能会有所不同。因此,我们需要根据实际情况找到我们需要的内容。 4. 完整代码 以下是一个完整的示例程序,用于爬取某个网站中以 "https://example.com/second-level" 开头的所有二级网页的标题和正文: ```python import requests from bs4 import BeautifulSoup # 获取主网页的链接 url = "https://example.com" response = requests.get(url) soup = BeautifulSoup(response.content, "html.parser") # 获取所有二级网页的链接 links = [] for link in soup.find_all("a"): href = link.get("href") if href.startswith("https://example.com/second-level"): links.append(href) # 爬取所有二级网页的内容 for link in links: response = requests.get(link) soup = BeautifulSoup(response.content, "html.parser") # 找到标题和正文 title = soup.find("h1").text content = soup.find("div", class_="content").text # 输出结果 print("Title:", title) print("Content:", content) ``` 这段代码可以根据实际需要进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值