使用正则表达式爬取票房信息

还是老样子哈哈,如果对正则不是很了解的同学,在这里推荐一个学习网址:
  http://www.runoob.com/python3/python3-reg-expressions.html


进入正文,这是我们要爬的网址: http://www.cbooo.cn/year?year=2008
而这个,就是我们要爬的内容了:


第一步,获取网页信息

import requests,re
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
,'Cookie':'Hm_lvt_daabace29afa1e8193c0e3000d391562=1550206631,1550381059; Hm_lpvt_daabace29afa1e8193c0e3000d391562=1550381609'}
url="http://www.cbooo.cn/year?year=2008"
req=requests.get(url,headers=headers,timeout=30)
req.encoding='utf-8'
req.text

运行结果:

根据网页的结构,我们可以通过标签来找到我们想要的内容

第二步,在使用正则之前,我们要找到我们需要的标签

在要查看的地方,右键选择检查,就可以在开发者工具里找到我们需要的标签

通过查找,我们发现 <tr> 就是我们要查找的内容

第三步,通过正则获取我们需要的信息

不知道什么是.?和(.?)是什么的同学,不要慌,我会在最后解释的。

rows=re.findall("<tr.*?>(.*?)</tr>",req.text,re.S)  #re.S:匹配换行
rows

运行结果:

第四步,过滤多余信息

for row in rows:tds=re.findall("<td.*?>(.*?)</td>",row,re.S)print(tds)

运行结果:

第五步,输出内容

由图可知,tds 是一个列表,它除了第一个元素是不规范的,其他都ok了,所以我们还要对他进行过滤,下面我就把它和输出步骤一起写出来了:

if len(tds) != 0:tds[0] = ''.join(re.findall('.*?</span>(.*?)</p>.*?',row,re.S))if tds == []:del tdselse:print(tds)

运行结果:

这样,我们爬取结果就出来了!


整合代码

PS:以上的代码知爬取了2008年的票房,在这里我加上了一个循环,爬取了2008年到2019年的票房:

import requests,re
#如果headers找不到,可以不加
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
,'Cookie':'Hm_lvt_daabace29afa1e8193c0e3000d391562=1550206631,1550381059; Hm_lpvt_daabace29afa1e8193c0e3000d391562=1550381609'}
def request(i):#发出请求url="http://www.cbooo.cn/year?year={}".format(i)req=requests.get(url,headers=headers,timeout=30)req.encoding='utf-8'#用正则找标签,r是取消转义rows=re.findall(r"<tr.*?>(.*?)</tr>",req.text,re.S)  #re.S:匹配换行#过滤多余信息并且循环输出for row in rows:tds=re.findall(r"<td.*?>(.*?)</td>",row,re.S)#对tds第一个元素进行正则匹配if len(tds) != 0:tds[0] = ''.join(re.findall(r'.*?</span>(.*?)</p>.*?',row,re.S))#删除空列表if tds == []:del tds#输出else:print(tds)print("==========================={}年爬取结束===============================".format(i))
#爬取2008年到2019年的年度票房
for i in range(2008,2020):request(i)

  • .*?的意思(个人理解):模糊匹配
  • (.*?)的意思(个人理解):就是我们要找的内容
#例子
import re
tds='''
<td class="td1">this is td1</td>
<td class="td2">this is td2</td>
'''
#<td.*?>是匹配所有的<td>标签
all_td=re.findall('<td.*?>(.*?)</td>',tds)
print(all_td)
#匹配td1的内容
td1=re.findall('<td class="td1">(.*?)</td>',tds)
print(td1)

运行结果:

[‘this is td1’, ‘this is td2’]
[‘this is td1’]


好啦,今天的学习笔记就到这里了,有疑惑或好的建议的小伙伴,可以给我留言哦!祝大家学业进步!

用正则表达式爬CBO年度票房相关推荐

  1. [python] 常用正则表达式爬取网页信息及分析HTML标签总结

    这篇文章主要是介绍Python爬取网页信息时,经常使用的正则表达式及方法.它是一篇总结性文章,实用性比较大,主要解决自己遇到的爬虫问题,也希望对你有所帮助~ 当然如果会Selenium基于自动化测试爬 ...

  2. python爬虫阶段性总结和项目实操——爬取猫眼票房Top100

    本博客通过爬取猫眼票房Top100来简要复习一下网页的HTML获取(requests库)解析(Beautiful Soup库)和数据保存(csv库)以及总结一下爬取过程中遇到的问题和解决方法 运行结果 ...

  3. 爬虫从头学之Requests+正则表达式爬取猫眼电影top100

    爬取思路 当我们想要爬取一个页面的时候,我们要保证思路清晰,爬虫的思路分四个步骤,发起请求,获取响应内容,解析内容,存储内容.根据这四个内容我们的思路就很清晰.以下为具体步骤 使用requests库爬 ...

  4. python3利用正则表达式爬取内涵段子

    似乎正则在爬虫中用的不是很广泛,但是也是基本功需要我们去掌握. 先将内涵段子网页爬取下来,之后利用正则进行匹配,匹配完成后将匹配的段子写入文本文档内.代码如下: # -*- coding:utf-8 ...

  5. 利用正则表达式爬取网络小说,并按照章节下载到本地

    利用正则表达式爬取网络小说,并按照章节下载到本地 闲来无事,尝试了使用正则表达式爬取了某个明显没有反扒机制的小说网站,其实也是刚刚接触爬虫,第一次从网络上爬到感兴趣的东西还是令人开心的. 先贴为敬. ...

  6. python爬取猫眼_python正则表达式爬取猫眼电影top100

    用正则表达式爬取猫眼电影top100,具体内容如下 #!/usr/bin/python # -*- coding: utf-8 -*- import json # 快速导入此模块:鼠标先点到要导入的函 ...

  7. Python实战---使用正则表达式爬取古诗文网

    使用正则表达式爬取古诗文网 爬取目标 具体字段为: title 标题 dynasty 朝代 author 作者 content 内容 tag 标签 实现代码 ''' @Description: 使用正 ...

  8. Python爬虫——使用正则表达式爬取一本喜欢的小说

    使用正则表达式爬取一本喜欢的小说 这个爬虫的案例是对正则表达式的运用,通过这个案例,我们可以对正则表达式有更深入的了解. 1. 信息来源: 努努书坊.爬取的小说:三国演义.链接为:https://ww ...

  9. python+正则表达式爬取京东商品数据信息

    爬取数据的方式有很多种,正则表达式,scrapy,从接口中爬取动态网页的数据-今天我们讲的是用正则表达式来爬取京东一个大米商品的具体信息. 正则表达式的优点:可以精准的爬取我们想要的数据信息 缺点:爬 ...

  10. 使用Requests+正则表达式爬取中国工作网招聘信息,并保存为JSON格式

    文章目录 一.准备 1.数据 2.数据字段 二.数据爬取 1.设置预设 2.观察网页源码(部分) 3.制定正则规则 三.数据存取 存为JSON文件 将多个字段列表进行打包,并放入一个list中 四.完 ...

最新文章

  1. solidworks重建模型好慢_兄弟只能帮你到这了,SOLIDWORKS卡顿或许秘密就在这些选项里...
  2. Tortoise SVN使用方法,简易图解
  3. CentOS7桌面版系统使用的一些小技巧
  4. 华为鸿蒙osbeta在哪看发布会,重磅消息!华为在发布鸿蒙OS2.0手机beta版本后,又发布搭载鸿蒙的新品!!...
  5. Oracle 11g Dataguard搭建及知识梳理
  6. iOS开发篇——OC之NSNumber数字对象讲解
  7. Java的GUI学习九(列出指定目录内容)
  8. 2017人工智能大会核心技术流出_机器人竟然已经能干这个了?
  9. php如何进行微信支付宝,php实现微信和支付宝支付的示例代码
  10. sockets: SCTP
  11. linux格式化分区进程,Linux 硬盘格式化、分区、挂载、卸载、删除分区,Linux重新调整分区...
  12. 用户输入月份,判断这个月是哪个季节
  13. 【欢聚时代】HR独家传授YY笔试面经小秘诀!
  14. 登录服务器xp系统,xp系统登入云服务器
  15. 华为荣耀4A USB 灰色解决版本
  16. 电路板级的EMC设计 (1)概述
  17. 豪拒60亿美元,天真的程序员CEO最终被自己的公司解雇
  18. 使用canvas生成一个圆形的图片
  19. pytorch2-gym
  20. 定时器、看门狗和RTC

热门文章

  1. Android Notification中PendingIntent.Flag的应用
  2. Python中base64编码解码结果为b‘xxx‘
  3. 微信小程序(一):微信小程序与服务器的简单链接
  4. CryEngine3渲染引擎剖析
  5. webp 图片格式_使用WebP图像格式的完整指南
  6. 浏览器刷新和页面手动为什么不一样?
  7. nmds与mds的区别_NMDS分析
  8. LaTeX参考文献取消doi输出
  9. 【文献心得】关于内核在不同芯片平台移植的相关整理
  10. python如何识别中文_python 判断是否为中文