> 文章列表 > 〖Python网络爬虫实战⑩〗- 正则表达式实战(一)

〖Python网络爬虫实战⑩〗- 正则表达式实战(一)

〖Python网络爬虫实战⑩〗- 正则表达式实战(一)

  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量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 requestsurl = '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

        我们看看会有什么效果吧。

        大家就会发现我们就把每个电影名字获取了下来。正则表达式是不是很神奇。大家可以尝试获取其他的数据,比如,什么时候上映以及评分。

🌟总结

今天,我们先通过一个简单的小案例,来学习正则表达式是如何使用的,下一篇,我们继续讲一个案例,加深大家对正则表达式的理解。