爬虫流程

  1. 发起请求,通过使用HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,并等待服务器响应。
  2. 获取响应内容如果服务器能正常响应,则会得到一个Response,Response的内容就是所要获取的页面内容,其中会包含:html,json,图片,视频等。
  3. 解析内容得到的内容可能是html数据,可以使用正则表达式、第三方解析库如Beautifulsoup,etree等,要解析json数据可以使用json模块,二进制数据,可以保存或者进一步的处理。
  4. 保存数据保存的方式比较多元,可以存入数据库也可以使用文件的方式进行保存。

正则表达式

正则表达式(regular expression),又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一些过滤逻辑。在Python中正则表达式通过re模块来实现。

正则表达式匹配规则

符号

说明

.

用于匹配任意一个字符,如 a.c 可以匹配 abc 、aac 、akc 等

^

用于匹配以...开头的字符,如 ^abc 可以匹配 abcde 、abcc 、abcak 等

$

用于匹配以...结尾的字符,如 abc$ 可以匹配 xxxabc 、123abc 等

*

匹配前一个字符零次或多次,如 abc* 可以匹配 ab 、abc 、abcccc 等

+

匹配前一个字符一次或多次,如 abc+ 可以匹配 abc 、abcc 、abcccc 等

?

匹配前一个字符零次或一次,如 abc? 只能匹配到 ab 和 abc

\

转义字符,比如我想匹配 a.c ,应该写成 a\.c ,否则 . 会被当成匹配字符

|

表示左右表达式任意匹配一个,如 aaa|bbb 可以匹配 aaa 也可以匹配 bbb

[ ]

匹配中括号中的任意一个字符,如 a[bc]d 可以匹配 abd 和 acd,也可以写一个范围,如 [0-9] 、[a-z] 等

( )

被括起来的表达式将作为一个分组,如 (abc){2} 可以匹配 abcabc ,a(123|456)b 可以匹配 a123b 或 a456b

{m}

表示匹配前一个字符m次,如 ab{2}c 可以匹配 abbc

{m,n}

表示匹配前一个字符 m 至 n 次,如 ab{1,2}c 可以匹配 abc 或 abbc

\d

匹配数字,如 a\dc 可以匹配 a1c 、a2c 、a3c 等

\D

匹配非数字,也就是除了数字之外的任意字符或符号,如 a\Dc 可以匹配 abc 、aac 、a.c 等

\s

匹配空白字符,也就是匹配空格、换行符、制表符等等,如 a\sc 可以匹配 'a c' 、a\nc 、a\tc 等

\S

匹配非空白字符,也就是匹配空格、换行符、制表符等之外的其他任意字符或符号,如 a\Sc 表示除了 'a c' 之外都能匹配,abc 、a3c 、a.c 等

\w

匹配大小写字母和数字,也就是匹配 [a-zA-Z0-9] 中的字符,如 a\wc 可以匹配 abc 、aBc 、a2c 等

\W

匹配非大小写字母和数字,也就是匹配大小写字母和数字之外的其他任意字符或符号,如 a\Wc 可以匹配 a.c 、a#c 、a+c 等

实战1:爬取ppt网页一级页面图片

import re,requests
#参数设置
page_num=2#页面数
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}#请求头信息,模拟浏览器进行请求#开始爬取
for n in range(page_num):url='http://www.1ppt.com/beijing/ppt_beijing_{}.html'.format(n+1)response=requests.get(url,headers=headers)#发送请求if response.status_code==200:response.encoding=response.apparent_encoding#字符编码设置为网页本来所属编码html=response.text#获取网页代码pattern= re.compile(r'img src="(.*?jpg)" alt')#编译正则表达式image_url= pattern.findall(html)#解析图片链接for i,link in enumerate(image_url):print('第{}页第{}张图片下载中......'.format(n+1,i+1))resp=requests.get(link,headers=headers)#请求图片链接content=resp.content#获取二进制内容with open('./图片/{}-{}.jpg'.format(n+1,i+1),'wb') as f:f.write(content)#下载图片else:print('请求失败!')

实战2:爬取ppt网页二级页面图片

import requests,re
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}#请求头,模拟浏览器进行请求
page_num=2for i in range(page_num):url='http://www.1ppt.com/beijing/ppt_beijing_{}.html'.format(i+1)print('第{}页爬取中......'.format(i+1))response=requests.get(url,headers=headers)#向一级网页发送请求if response.status_code==200:    response.encoding=response.apparent_encoding#字符编码设置为网页本来所属编码html=response.text#获取网页代码pattern=re.compile(r'<li> <a href="(.*?)" target="_blank">')#编译正则表达式url_sub=pattern.findall(html)#解析二级页面链接url_sub=['http://www.1ppt.com'+x for x in url_sub]#拼接成完整链接for j,link in enumerate(url_sub):print('第{}页第{}个ppt爬取中......'.format(i+1,j+1))resp=requests.get(link,headers=headers)#向二级网页发送请求if resp.status_code==200: resp.encoding=resp.apparent_encoding#字符编码设置为网页本来所属编码html_sub=resp.text#获取网页代码pattern=re.compile(r'img src="(.*?)" width="700"')#编译正则表达式image_link=pattern.findall(html_sub)#解析图片链接for k,li in enumerate(image_link):response_image=requests.get(li,headers=headers)#请求图片链接content=response_image.content#获取图片二进制内容with open('./图片/{}-{}-{}.jpg'.format(i+1,j+1,k+1),'wb') as f:f.write(content)#下载图片   else:print('第{}页第{}个ppt链接请求失败!'.format(i+1,j+1))else:print('第{}页一级页面请求失败!'.format(i+1))

如果对你有帮助,请点下赞,予人玫瑰手有余香!

时时仰望天空,理想就会离现实越来越近!

爬虫一:用正则表达式爬取图片相关推荐

  1. python爬虫系列:xpath爬取图片讲解(零基础向)

    系列文章目录 python爬虫系列:BeautifulSoup爬取小说讲解(零基础向)(版权问题下架) python爬虫系列:requests下载酷我音乐讲解(零基础向)(版权问题下架) 文章目录 目 ...

  2. python网络爬虫之使用scrapy爬取图片

    在前面的章节中都介绍了scrapy如何爬取网页数据,今天介绍下如何爬取图片. 下载图片需要用到ImagesPipeline这个类,首先介绍下工作流程: 1 首先需要在一个爬虫中,获取到图片的url并存 ...

  3. 爬虫实例:正则表达式爬取微博热搜榜

    最近在学习python的爬虫知识,分享一个爬取微博热搜的实例,代码很简单. 用到了requests,re,xlwt库 直接看图: #1导入模块 import requests import re im ...

  4. 爬虫练习--使用正则表达式爬取B站排行榜

    1.首先打开B站网页 从中可以获取的信息是网站的URL是"https://www.bilibili.com/v/popular/rank/all" 2.打开开发者工具,在Netwo ...

  5. Python网络爬虫:利用正则表达式爬取豆瓣电影top250排行前10页电影信息

    在学习了几个常用的爬取包方法后,转入爬取实战. 爬取豆瓣电影早已是练习爬取的常用方式了,网上各种代码也已经很多了,我可能现在还在做这个都太土了,不过没事,毕竟我也才刚入门-- 这次我还是利用正则表达式 ...

  6. python爬虫抓取图片-简单的python爬虫教程:批量爬取图片

    python编程语言,可以说是新型语言,也是这两年来发展比较快的一种语言,而且不管是少儿还是成年人都可以学习这个新型编程语言,今天南京小码王python培训机构变为大家分享了一个python爬虫教程. ...

  7. python 正则表达式爬图片_利用python正则表达式爬取图片

    .*?(.*?)' + '.*?class="IcoList">(.*?).*?class="IcoTime">(.*?)', re.S) item ...

  8. 爬虫输入关键字搜索爬取图片

    import requests #QQ签名 def shnang():key = input('请输入关键词:')url = 'https://www.qqtn.com/qm/?wd='+keytry ...

  9. 爬虫(利用正则表达式爬取百度新闻(淘宝))

    先直接在百度新闻中搜索"淘宝" 得到url = """ https://www.baidu.com/s?ie=utf-8&medium=0&a ...

  10. 用正则表达式爬取糗图的图片和一些励志语句

    用正则表达式爬取图片并保存到文件中,爬取一些励志名言保存到.txt文件中 链接:https://pan.baidu.com/s/1YUMDI1iD_YdkrXDKfNbVGQ 提取码:n87f 链接: ...

最新文章

  1. 2020年丘赛放榜:北大斩获5金11银强势霸榜
  2. Cetos 7 命令行登陆与图形界面登陆相互切换
  3. 通过Zabbix全面监控NetScaler负载均衡设备
  4. 未能加载文件或程序集“Iesi.Collections”或它的某一个依赖项。参数错误。 (异常来自 HRESULT:0x80070057 (E_INVALIDARG))
  5. python os 文件锁_python 中给文件加锁——fcntl模块
  6. C语言rand(),srand()函数真实性能分析
  7. linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例
  8. MySQL管理工具MySQL Utilities — 如何连接MySQL服务器
  9. 河池学院计算机宿舍,河池学院宿舍条件,宿舍环境图片(10篇)
  10. 基于handsontable的web excel(上)
  11. Android基础入门教程——7.3.3 Android 文件下载(2)
  12. Excel筛选后填充
  13. WPS Excel+windows批处理批量重排序文件夹
  14. 自建dnspod解析服务器,利用DNSPOD配置智能解析双线服务器
  15. python自动玩游戏_python学习:(2)自动玩2048游戏
  16. Spring系列04德鲁伊连接池配置
  17. java bfs 迷宫例子_51-迷宫(一)- java版dfs和bfs
  18. 安装MySQL 5.7.11版本,64位绿色版安装【亲测可用】
  19. mysql统计每半小时内的数据(查寻某段时间内的数据)
  20. 利用AutoSSH实现远程管理内网服务器

热门文章

  1. 计算机语言的正交性,什么是“正交性”?
  2. 【简单实用】百度网盘提速方法,不用破解和插件
  3. linux 循环while,linux命令:while循环
  4. 20张Python高清数据分析全知识地图,数据分析发展路线
  5. 腾讯云直播流程及腾讯云通讯功能整理
  6. 语音合成论文优选:One-shot Voice Conversion by Separating Speaker and Content Representations with Instance N
  7. android 解压相关问题,解压文件失败的情况
  8. android 壁纸尺寸,常见手机壁纸的尺寸是多少
  9. STC单片机实现printf
  10. 微信小程序数据库操作之更新数据(转载)