Python爬虫运用正则表达式的方法和优缺点


Posted in Python onAugust 25, 2019

前言

我看到最近几部电影很火,查了一下猫眼电影上的数据,发现还有个榜单,里面有各种经典和热映电影的排行榜,然后我觉得电影封面图还挺好看的,想着一张一张下载真是费时费力,于是突发奇想,好像可以用一下最近学的东西实现我的需求,学习了正则表达式之后,想着要感受一下它在爬虫里面的效果和优缺点。

目标:爬取Top100榜单上电影的封面图

Top100榜单规则:将猫眼电影库中的经典影片,按照评分和评分人数从高到低综合排序取前100名,每天上午10点更新。相关数据来源于“猫眼电影库”。

下面是我做的步骤:

(1)查看页面元素,找到包含图片的路径的代码段落

(2)分析图片在web上面的唯一属性,便于之后获取正确图片位置信息

(3)因为需要翻页,观察多个页面的URL变化

(4)综合以上几个点,编写合适的正则表达式

 1、python 标准库中re模块提供了正则表达式的全部功能,直接引入;requests模块是http库,爬虫常用库,而urllib.requests 则是最后用到写入文件的函数

import re
import requests
import urllib.request

2、先接收URL地址的HTML页面,然后转化为str形式(正则表达式是匹配字符串),第一个pattern1缩小范围,抓取目标部分,result1接收匹配的结果,这时候所有封面图地址就在里面了

response = requests.get(url)
response = str(response.content)
patttern1 = '<dl class="board-wrapper">.+?<div class="pager-main">'
result1 = re.compile(pat).findall(response)

3、第二个正则,匹配图片的地址信息

pat2 = '<img data-src="https://(.+?\.jpg)'
photos = re.compile(pat1).findall(re1[0])

这时候爬取到100张图的信息,如下图:

Python爬虫运用正则表达式的方法和优缺点

 4、继续下一步,把每张图片命名好,需要正确的图片地址,避免重复 

x = 1
for imgurl in name:
 imgname = 'D:/Top 100/'+str(i/10)+str(x)+'.jpg'
 imgurl = 'https://'+imgurl
 urllib.request.urlretrieve(imgurl,filename=imgname)
 x += 1

 5、最后一步了,因为需要翻页爬取,所以加了一个循环,10页内容爬取下来

for i in range(0, 100, 10):
  url = 'http://maoyan.com/board/4?offset='+str(i)
  get_one_page(url, i)
  #定义函数,多次调用

相对来说,这是一个很简单的应用,也是自己学习之后的实践,在这个例子中,我是用到正则表达式来实现的,还有其他方法,而且可能简单,比如BeautifulSoup,XPath等方法,用在更加复杂的爬虫项目里面,需要的知识更多,方法更严谨,还需学习学习!

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python的Bottle框架中实现最基本的get和post的方法的教程
Apr 30 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
go和python变量赋值遇到的一个问题
Aug 31 Python
python字符串常用方法
Jun 14 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
python通过paramiko复制远程文件及文件目录到本地
Apr 30 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 Python
Python基于Tkinter编写crc校验工具
May 06 Python
如何在pycharm中安装第三方包
Oct 27 Python
python爬虫工具例举说明
Nov 30 Python
教你用python实现一个无界面的小型图书管理系统
May 21 Python
numpy求平均值的维度设定的例子
Aug 24 #Python
Python实现滑动平均(Moving Average)的例子
Aug 24 #Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 #Python
在Python3 numpy中mean和average的区别详解
Aug 24 #Python
Python绘制股票移动均线的实例
Aug 24 #Python
python+selenium 鼠标事件操作方法
Aug 24 #Python
python+selenium select下拉选择框定位处理方法
Aug 24 #Python
You might like
php在字符串中查找另一个字符串
2008/11/19 PHP
php程序员应具有的7种能力小结
2014/11/27 PHP
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
JS重要知识点小结
2011/11/06 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
JS判定是否原生方法
2013/07/22 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
javaScript强制保留两位小数的输入数校验和小数保留问题
2018/05/09 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
2018/08/30 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
python读写二进制文件的方法
2015/05/09 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
python模拟表单提交登录图书馆
2018/04/27 Python
Python封装原理与实现方法详解
2018/08/28 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
Django时区详解
2019/07/24 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
Python实现AI换脸功能
2020/04/10 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
python中pyqtgraph知识点总结
2021/01/26 Python
HTML5 visibilityState属性详细介绍和使用实例
2014/05/03 HTML / CSS
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
外贸业务员求职信范文
2013/12/12 职场文书
表扬信格式
2014/01/12 职场文书
支部鉴定材料
2014/06/02 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
艺术学院毕业生自荐信
2014/07/05 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
教师节慰问信
2015/02/15 职场文书
创业计划书之校园跑腿公司
2019/09/24 职场文书