位置: IT常识 - 正文

Python爬虫经典战役——正则实战(python爬虫推荐)

编辑:rootadmin
Python爬虫经典战役——正则实战 本文概要

推荐整理分享Python爬虫经典战役——正则实战(python爬虫推荐),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:python爬虫 科普,python爬虫经典例子,pythone爬虫,python爬虫大全,python爬虫推荐,python爬虫大全,pythonb爬虫,pythonb爬虫,内容如对您有帮助,希望把文章链接给更多的朋友!

本篇文章主要介绍利用Python爬虫爬取某瓣电影信息,适合练习爬虫基础的同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧!

🌟🌟🌟个人简介🌟🌟🌟

☀️大家好!我是新人小白博主朦胧的雨梦,希望大家多多关照和支持😝😝😝 🌖大家一起努力,共同成长,相信我们都会遇到更好的自己👊👊👊 🌗期待我的文章能给各位带来收获和解决问题的灵感🤩🤩🤩 🌟大家的三连是我不断更新的动力~😘😘😘

目录本文概要🌟🌟🌟个人简介🌟🌟🌟本次爬虫思路本次操练网页网页内容:学习目标🏆✨一.模板🌲1.urllib库的使用模板🌲2.requests库的使用模板✨二.分析信息接口✨三.通过请求拿到响应✨四. 提取信息🌲正则表达式✨五.保存内容✨六.总结(附完整代码)🌲完整代码💫往期好文推荐本次爬虫思路

1. 获取url 2. 通过请求拿到响应 3. 处理反爬 4. 提取信息 5. 保存内容

本次操练网页

        https://movie.douban.com/top250<某瓣电影信息>

网页内容:

学习目标🏆

  1.了解正则表达式的书写;

  2.掌握网页页面结构;

  3.掌握如何利用正则表达式提取内容。

✨一.模板🌲1.urllib库的使用模板import urllib.requesturl ='xxxxxxxxxxxx' # 发送请求 request= urllib.request.Request(url,data,header) # 得到响应response=urllib.request.urlopen(request)# 解码content = response.read().decode() # 查看数据print(content) 🌲2.requests库的使用模板import requestsurl ='xxxxxxxxxxxx' # 发送请求 response = request.get(url, params,headers) (get请求或者post请求) # 根据响应的格式解码,非常智能response.encoding=response.appareent_encoding# 查看数据print(response.txt)✨二.分析信息接口

  右键查看网页源代码

  很明显,爬取的信息就在源代码里,熟悉的结构熟悉的配方,这里直接对网页链接发起请求,从而得到它的网页源码。

✨三.通过请求拿到响应import requests# 需要请求的urlurl = 'https://movie.douban.com/top250'# 伪装请求头headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',}# 获得响应response = requests.get(url=url, headers=headers)# 智能解码response.encoding = response.apparent_encoding# 打印数据print(response.text)

同理,这种网页结构就是最好的,它把所有信息都放在明面上(不偷摸搞事情),上一篇咱们重点学习了如何去使用XPath提取页面信息,本篇同样的结构,而侧重点在正则表达式,希望大家能提前掌握好文章的重心变化,话不多说,开干!

✨四. 提取信息🌲正则表达式

  Python 自1.5版本起增加了re模块,它提供 Perl 风格的正则表达式模式。compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。

  compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。 re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。

  咱们主要介绍re.compile函数:   compile函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。

函数参数作用re.compile()pattern,flagscompile函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用

对于参数flags:可选,表示匹配模式。

参数作用re.I忽略大小写re.L表示特殊字符集, 依赖于当前环境re.M多行模式re.S即为 . 并且包括换行符在内的任意字符(. 不包括换行符)re.U表示特殊字符集,依赖于 Unicode 字符属性数据库re.X为了增加可读性,忽略空格和 # 后面的注释Python爬虫经典战役——正则实战(python爬虫推荐)

re.finditer(),在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

参数作用pattern匹配的正则表达式string要匹配的字符串flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等

正则表达式模式:

模式作用匹配字符串的开头$匹配字符串的末尾.匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符\w匹配字母数字及下划线\W匹配非字母数字及下划线\S匹配任意非空字符……

我相信大家此刻非常头疼,这么多,别说用了,就是死记硬背也记不住啊,对于新手来说一般不需要写的非常细致,当然,还是推荐大家多加练习,这时候就要介绍我们的一种简单粗暴的正则表达式模式——贪婪匹配,顾名思义,就是尽可能多的匹配字符,具体写法就是:

.*

对应的就是非贪婪匹配,就是尽可能少的匹配字符,具体写法就是:

.*?

举例,就针对字符串:

<img width=“100” alt=“肖申克的救赎” src=“https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg”

我们就需要提取““肖申克的救赎”这几个字,好,接下来,看操作,首先“<img width=“100” alt=” ”和“ " ”到这,中间是我们想要的文本,如果 我们使用贪婪匹配,它是尽可能多的匹配,那么它会将双引号左边之后的所有信息全部匹配上,如下: 正则表达式语句:

s = '<img width="100" alt="肖申克的救赎" src="https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg"'it = re.compile(r'<img width="100" alt="(?P<name>.*)"')result = it.finditer(s)for item in result: print(item.group('name'))

结果:

E:\Python\python.exe C:\Users\86134\Desktop\python\re模块.py肖申克的救赎" src="https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg进程已结束,退出代码0

所以,对于这种情况应该用非贪婪匹配: 正则表达式语句:

s = '<img width="100" alt="肖申克的救赎" src="https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.jpg"'it = re.compile(r'<img width="100" alt="(?P<name>.*?)"')result = it.finditer(s)for item in result: print(item.group('name'))

结果:

E:\Python\python.exe C:\Users\86134\Desktop\python\re模块.py肖申克的救赎进程已结束,退出代码0

到这里,相信大家已经初步掌握了贪婪匹配和非贪婪匹配,那我们上正菜:

首先导入re模块

import re

接下来开始操作这堆"字符"

  右键点击检查进入Network页面,主要是方便我们看清楚结构。 正则表达式语句:

pattern = re.compile(r'<img width="100" alt="(?P<name>.*?)"' r'.*?<p class="">.*? ' r'导演: (?P<director>.*?)&nbsp.*?' r'主演: (?P<actors>.*?)<br>' r'(?P<year>.*?)&nbsp;.*?' r'/&nbsp;(?P<country>.*?)&nbsp;.*?' r';(?P<type>.*?)</p>.*?' r'<span class="rating_num" property="v:average">(?P<mark>.*?)</span>.*?' r'<span>(?P<evaluate>.*?)</span>', re.S)

效果

  深刻理解每条语句的用意,多多练习!

✨五.保存内容result = pattern.finditer(h)for item in result: with open('豆瓣电影信息.txt', 'a', encoding='utf-8') as fp: fp.write('\n') fp.write(item.group('name')) fp.write('\n') fp.write(item.group('director')) fp.write('\n') fp.write(item.group('actors')) fp.write('\n') fp.write(item.group('year')) fp.write('\n') fp.write(item.group('country')) fp.write('\n') fp.write(item.group('type')) fp.write('\n') fp.write(item.group('mark')) fp.write('\n') fp.write(item.group('evaluate')) fp.write('\n')print('爬取完成')

效果

✨六.总结(附完整代码)

  通过今天的小案例,针对今天的这个网页结构,我们可以多角度练习正则表达式,好了,今天就分享到这里,谢谢大家的观看,有什么想法记得评论区告诉我!拜拜~✨ ✨ ✨

🌲完整代码import requestsimport reurl = 'https://movie.douban.com/top250'headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'}response = requests.get(url=url, headers=headers)response.encoding = response.apparent_encoding# print(response.text)h = response.textpattern = re.compile(r'<img width="100" alt="(?P<name>.*?)"' r'.*?<p class="">.*? ' r'导演: (?P<director>.*?)&nbsp.*?' r'主演: (?P<actors>.*?)<br>' r'(?P<year>.*?)&nbsp;.*?' r'/&nbsp;(?P<country>.*?)&nbsp;.*?' r';(?P<type>.*?)</p>.*?' r'<span class="rating_num" property="v:average">(?P<mark>.*?)</span>.*?' r'<span>(?P<evaluate>.*?)</span>', re.S)result = pattern.finditer(h)for item in result: with open('豆瓣电影信息.txt', 'a', encoding='utf-8') as fp: fp.write('\n') fp.write(item.group('name')) fp.write('\n') fp.write(item.group('director')) fp.write('\n') fp.write(item.group('actors')) fp.write('\n') fp.write(item.group('year').strip()) fp.write('\n') fp.write(item.group('country')) fp.write('\n') fp.write(item.group('type')) fp.write('\n') fp.write(item.group('mark')) fp.write('\n') fp.write(item.group('evaluate')) fp.write('\n')print('爬取完成')💫往期好文推荐

  TOP🥇.自动驾驶技术未来大有可为❤️❤️❤️🏆🏆🏆❤️❤️❤️

  TOP🥈.Python爬虫 | 一文解决文章付费限制问题❤️❤️❤️🏆🏆🏆❤️❤️❤️

  TOP🥉.ChatGPT | 一文详解ChatGPT(学习必备)❤️❤️❤️🏆🏆🏆❤️❤️❤️

本文链接地址:https://www.jiuchutong.com/zhishi/299386.html 转载请保留说明!

上一篇:视觉机械臂自主抓取全流程(视觉机械臂操作视频)

下一篇:计算机视觉—— 相机标定(计算机视觉未来发展方向)

  • 京东怎么查看好友的详细信息和精选晒单(京东怎么查看好友代付记录)

    京东怎么查看好友的详细信息和精选晒单(京东怎么查看好友代付记录)

  • 微信删除拉黑了对方,对方列表里还有你吗(微信删除拉黑了还能不能恢复聊天记录)

    微信删除拉黑了对方,对方列表里还有你吗(微信删除拉黑了还能不能恢复聊天记录)

  • oppo怎么卸载breeno(oppo怎么卸载主题商店)

    oppo怎么卸载breeno(oppo怎么卸载主题商店)

  • word的图片不能显示怎么办(word的图片不能调位置)

    word的图片不能显示怎么办(word的图片不能调位置)

  • 群文件怎么移动到群文件夹(群文件怎么移动到指定文件夹)

    群文件怎么移动到群文件夹(群文件怎么移动到指定文件夹)

  • 荣耀手机有语音助手吗(荣耀手机有语音拨号功能吗)

    荣耀手机有语音助手吗(荣耀手机有语音拨号功能吗)

  • 怎么看朋友圈是不是仅我可见(怎么看朋友圈是屏蔽了还是删了自己)

    怎么看朋友圈是不是仅我可见(怎么看朋友圈是屏蔽了还是删了自己)

  • word文档怎么调字上下间距(word文档怎么调整行高和列宽)

    word文档怎么调字上下间距(word文档怎么调整行高和列宽)

  • oppo开了OTG读不出来

    oppo开了OTG读不出来

  • 淘宝怎么删除好评(淘宝怎么删除好友代付记录)

    淘宝怎么删除好评(淘宝怎么删除好友代付记录)

  • 旺旺号是淘宝昵称还是会员名(旺旺号是淘宝用户名吗)

    旺旺号是淘宝昵称还是会员名(旺旺号是淘宝用户名吗)

  • 锁定模式是什么意思(锁定模式是什么样的)

    锁定模式是什么意思(锁定模式是什么样的)

  • 支付宝怎么更改实名认证和绑定的身份证号码(支付宝怎么更改学生认证信息)

    支付宝怎么更改实名认证和绑定的身份证号码(支付宝怎么更改学生认证信息)

  • 小米8机身长度(小米八手机长宽高)

    小米8机身长度(小米八手机长宽高)

  • 电脑截图退出不了(电脑截屏退出不了怎么回事)

    电脑截图退出不了(电脑截屏退出不了怎么回事)

  • 快手的特别关注在哪里(快手平台点赞)

    快手的特别关注在哪里(快手平台点赞)

  • 初始化igpu开启还是关闭(bios初始化igpu什么意思)

    初始化igpu开启还是关闭(bios初始化igpu什么意思)

  • vivo如何修改微信铃声(vivo如何修改微信提示音)

    vivo如何修改微信铃声(vivo如何修改微信提示音)

  • 小米手环4nfc上市时间(玩转小米手环4nfc)

    小米手环4nfc上市时间(玩转小米手环4nfc)

  • spn-al00是什么机型(spn一al00是什么型号多少钱)

    spn-al00是什么机型(spn一al00是什么型号多少钱)

  • 企业公众号申请流程(企业公众号申请需要哪些资料)

    企业公众号申请流程(企业公众号申请需要哪些资料)

  • 抖音动态没了怎么找回(抖音动态没了怎么找回来)

    抖音动态没了怎么找回(抖音动态没了怎么找回来)

  • 基带坏了是什么症状(基带坏了是什么样子的)

    基带坏了是什么症状(基带坏了是什么样子的)

  • 红魔呼吸灯怎么设置(红魔手机后面有个呼吸灯吗)

    红魔呼吸灯怎么设置(红魔手机后面有个呼吸灯吗)

  • 键盘字母上面0到9失灵(键盘字母上面的数字怎么按不出来)

    键盘字母上面0到9失灵(键盘字母上面的数字怎么按不出来)

  • spss安装后无法启动并行配置不正确解决方法(spss安装后无法启动许可证授权向导)

    spss安装后无法启动并行配置不正确解决方法(spss安装后无法启动许可证授权向导)

  • 蜡梅的养殖方法(蜡梅的养殖方法视频)

    蜡梅的养殖方法(蜡梅的养殖方法视频)

  • 【前端每日一问002】jquery中each与data方法的用法与概念(前端常问的面试题)

    【前端每日一问002】jquery中each与data方法的用法与概念(前端常问的面试题)

  • 企业所得税的起征点
  • 财务报表上期金额怎么填写
  • 净资产包含哪些方面
  • 企业购买土地如何做账
  • 分公司没有业务季报怎么处理
  • 销售收入做账属于什么凭证
  • 税务1236600短信
  • 个人股权转让未分配利润如何处理
  • 股东股权比例怎么分配
  • 股票投资收益是指投资者从购入股票开始到出售为止整
  • 投资性房地产转固定资产账务处理
  • 递延资产是长期待摊费用吗
  • 无形资产内部研究开发支出的确认和计量
  • 小规模纳税人零申报是每季度报吗
  • 计提工会经费是按应付职工薪酬的借方还是贷方
  • 建筑企业升资质主管单位
  • 购买的车位应如果要进行税务处理需注意什么?
  • 增值税预缴税需要申报吗
  • 改扩建要计提折旧吗
  • 退税发票勾选后开红冲发票怎么申报
  • 营改增之前的增值税
  • 跨月发票冲红账怎么做
  • 工会经费什么时候申报缴纳
  • 职工教育经费培训费扣除比例
  • 所得税汇算清缴前取得跨年发票
  • php框架的作用
  • php 定时执行文件脚本
  • php如何实现伪静态
  • 微无界是什么软件
  • php购物车实现流程
  • uname命令功能
  • 应付职工薪酬多栏式
  • 企业收到企业借款需要交税
  • 非成品油发票为什么不能抵扣
  • 缴纳税款滞纳金怎么算
  • 接受捐赠收入如何纳税
  • 房屋出租 交税
  • 出口汽车配件怎么报关
  • 三代手续费操作流程
  • 深圳增值税普通发票和专用发票的区别
  • mongodb 根据条件查询数量
  • 一般纳税人销售旧货
  • 收到法人投资款需要什么手续
  • 免税申报表里的免税销售额是不含税
  • 应交税费已交税金是什么意思
  • 企业计提坏账准备时应该借记什么科目
  • 可以公账户给私人转账吗
  • 广交会展务
  • 工程进度款如何做账
  • 汇算清缴期间费用社保填哪里
  • 小规模企业税金怎么做账
  • 外国专家经费管理办法
  • 股权转让的资料有哪些
  • 银行日记账的登记依据有哪些
  • 进料加工与来料加工
  • 如何登录网络?
  • 印花税滞纳金怎么处理
  • 分公司做账报税
  • sqlserver 获取表字段
  • win2003安全模式怎么进
  • 电脑更新windows11后开机一黑屏
  • svcproc.exe - svcproc是什么进程 有什么作用
  • windows 水印
  • win7的注册表在哪里打开
  • django框架结构
  • android 一个activity多个layout
  • csshtml经典案例
  • SendTo增强版 批处理实用小工具
  • javascript的引用类型
  • jquery mobile demo
  • javascript获取当前文件夹文件数量
  • Android之Async-http
  • js教程 chm
  • android navigation bar
  • python电话本
  • 记住密码自动登录怎么取消
  • 如何在电子税务局添加办税人员
  • 增值税纳税申报表附列资料(一)
  • 辽宁省耕地占用税税率
  • 企业代扣代缴个人所得税怎么算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设