- 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+
python项目实战
Python编程基础教程系列(零基础小白搬砖逆袭)
- 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)。
- 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。
最近更新
〖Python网络爬虫实战⑦〗- requests的使用(一)
〖Python网络爬虫实战⑧〗- requests的使用(二)
〖Python网络爬虫实战⑨〗- 正则表达式基本原理
上节回顾
上一节我们基本了解了正则表达式其中的原理。后面我们将通过两个具体案例来加深对正则表达式的理解。今天,我们先通过一个简单的小案例,来学习正则表达式是如何使用的。
⭐️正则表达式实战(一)
🌟环境使用
- python 3.9
- pycharm
🌟模块使用
- requests
🌟模块介绍
- requests
requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,requests是Python语言的第三方的库,专门用于发送HTTP请求,使用起来比urllib简洁很多。
- re
re模块是python独有的匹配字符串的模块,该模块中提供的很多功能是基于正则表达式实现的,而正则表达式是对字符串进行模糊匹配,提取自己需要的字符串部分,他对所有的语言都通用。
🌟模块安装问题:
- 如果安装python第三方模块:
win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
在pycharm中点击Terminal(终端) 输入安装命令
- 安装失败原因:
- 失败一: pip 不是内部命令
解决方法: 设置环境变量
- 失败二: 出现大量报红 (read time out)
解决方法: 因为是网络链接超时, 需要切换镜像源
清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:https://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 华中理工大学:https://pypi.hustunique.com/ 山东理工大学:https://pypi.sdutlinux.org/ 豆瓣:https://pypi.douban.com/simple/ 例如:pip3 install -i https://pypi.doubanio.com/simple/ 模块名
- 失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入
解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好,或者你pycharm里面python解释器没有设置好。
🌟案例实战
我们接下来通过一个简单的网站,我们来获取其简单的数据,我们就用我们刚刚学习的正则表达式来获取,当然,我们也可以使用xpath和css获取,这个我们以后也会教学的。
✨发送请求
我们首先确定网站,使用requests发送请求,获取网页源代码。
import requests
url = 'https://ssr1.scrape.center/'
这行代码导入了Python的requests
模块。requests
是一个用于HTTP请求的Python库,可以用于爬取网站的数据。在这里,我们使用requests
来访问一个名为ssr1.scrape.center
的网站,并将其存储在变量url
中。
✨获取数据
res = requests.get(url)
这行代码使用requests
库的get()
函数来访问url
所指向的网站,并将返回的结果存储在变量res
中。请注意,get()
函数的第一个参数是要访问的URL地址,第二个参数是可选的请求方法(默认为GET
)。在这里,我们使用get()
函数来获取url
所指向的网站的数据。
我们来看看获得了哪些数据。
如果,你也得到了和我一样的数据,说明你就迈出了采集数据的第一步了。现在,我们想把这个页面所有的电影名字获取下来,我们一个一个复制太麻烦了。我们先看看网页源代码是怎么写的。
✨解析数据
我们看到这里,我们就可以使用正则表达式是获取我们想要的数据。
title = re.findall('class="m-b-sm">(.*?) -',res.text)
那么,这行代码什么意思呢?这行代码使用正则表达式class="m-b-sm">(.*?)
来查找res.text
中的所有类名为m-b-sm
的标签。.*?
表示非贪婪匹配,即只匹配尽量少的字符。最终结果是一个包含匹配标签的列表title
。
我们看看会有什么效果吧。
大家就会发现我们就把每个电影名字获取了下来。正则表达式是不是很神奇。大家可以尝试获取其他的数据,比如,什么时候上映以及评分。
🌟总结
今天,我们先通过一个简单的小案例,来学习正则表达式是如何使用的,下一篇,我们继续讲一个案例,加深大家对正则表达式的理解。