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基于pygame实现响应游戏中事件的方法(附源码)
Nov 11 Python
Python内置数据结构与操作符的练习题集锦
Jul 01 Python
python编程实现归并排序
Apr 14 Python
python实现kMeans算法
Dec 21 Python
简单了解什么是神经网络
Dec 23 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
用Python编写一个简单的CS架构后门的方法
Nov 20 Python
python redis 删除key脚本的实例
Feb 19 Python
Python中如何导入类示例详解
Apr 17 Python
python3中的logging记录日志实现过程及封装成类的操作
May 12 Python
python使用re模块爬取豆瓣Top250电影
Oct 20 Python
python中pandas对多列进行分组统计的实现
Jun 18 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读取RSS feed的代码
2008/08/01 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php在线解压ZIP文件的方法
2014/12/30 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
2007/08/13 Javascript
javascript一些不错的函数脚本代码
2008/09/10 Javascript
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
2016/06/10 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
如何获取元素的最终background-color
2017/02/06 Javascript
Vue开发中整合axios的文件整理
2017/04/29 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python中的模块和包概念介绍
2015/04/13 Python
python 队列详解及实例代码
2016/10/18 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
python解决字符串倒序输出的问题
2018/06/25 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
css3 box-shadow阴影(外阴影与外发光)图示讲解
2017/08/11 HTML / CSS
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
C语言怎样定义和声明全局变量和函数最好
2013/11/26 面试题
写好自荐信的几个要点
2013/12/26 职场文书
大学生旅游业创业计划书
2014/01/29 职场文书
《天安门广场》教学反思
2014/04/23 职场文书
董存瑞观后感
2015/06/11 职场文书
一年级语文教学随笔
2015/08/14 职场文书
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
如何在python中实现ECDSA你知道吗
2021/11/23 Python
SpringBoot中HttpSessionListener的简单使用方式
2022/03/17 Java/Android