点击上方蓝色文字关注我们吧~
一、前言
爬虫是Python的一个重要的内容,使用Python爬虫我们可以轻松的从网络中批量抓取我们想要的数据。 网络爬虫,又称为网页蜘蛛。是一种按照一定规则获取网页内容的程序,爬虫被广泛用于互联网搜索引擎或其他类似网站,例如谷歌、百度,爬虫可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的数据。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。本文将基于爬取某桌网图片并存储为例,详细介绍Python爬虫的基本流程。
如果你还没安装好python以及IDE的话,可以看下这篇文章:python以及PyCharm安装教程
文末送完整代码!
二、爬虫的基本步骤
1.确定URL(链接)、分析网页点击下一页URL不发生变化是动态加载;如果网页需要往下拉才能查看更多的内容的一般都是动态加载。
然后查看内容是否在网页源代码里面,如果在的话,一般都是静态网页,反之,则是动态加载网页。
2.模拟浏览器,获取数据
一般用requests、urllib等库实现HTTP网络请求,获取网页源代码或者json数据。
3. 解析网页,提取数据一般用re正则表达式、Beautiful Soup、xpath等方法提取网页数据。
4.保存数据 提取数据后,可以对文本、视频、图片等文件进行保存。文本可以保存为TXT、DOCX、CSV等文件格式。图片可以保存为jpg等格式。视频可以保存为MP4等格式。三、确定目标URL,然后进行分析网页
此次爬取的是某桌网一组杨洋的图片,一共9张图片。
目标URL:http://www.win4000.com/meinv215413.html,这是这组图片的首页url。
我们把网页往下拉,发现下面有这组图的缩减图。
我们右键查看网页源代码,查看图片内容是否在网页源代码中。
我们CTRL+f查找组图的标题,发现图片内容在网页源代码中,图片的url放在a标签中。其中data-original存的是图片的真实url。四、着手写代码
既然知道了网页的url和图片的真实url,以及网页是静态网页,那么就可以正式写代码了。 第一步 导入依赖库#网络请求库import requests#网页解析库 import re
re库是python自带的,不需要安装;
requests是外部库,需要用命令行进行安装,具体操作:按住键盘的windows+R键,调出运行窗口,在输入框输入cmd,然后复制命令行:pip install requests到弹出的窗口。
第二步 模拟浏览器,请求数据
#模拟浏览器headers={ 'User-Agent':'Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.162Safari/537.36' }
建立headers这一步是为了告诉网站,你不是爬虫,防止被网页检测到。一般的网站只用这个就行了,但有些网站还需要携带Cookie、Referer等参数。
#请求数据res=requests.get('http://www.win4000.com/meinv215413.html',headers=headers).text
这里用到requests库中的get请求,
之所以是get
请求,
可
以点击鼠标
右键,然后
点击
检查
;
或者
点击键盘的
F12进行查看
,
具体操作
可以
看下图。
把headers参数传进去;text是为了请求网页的源代码。
第三步 解析网页,获取图片url
#解析图片urls=re.findall('data-original="(.*?)" alt="杨洋黑色西装酷帅品牌活动图片"',res)
从上面的分析网页可以知道,我们发现图片的url存在data-original中,我们直接用re中的findall方法进行提取。然后用()括住data-original中的url,括号是表示需要的内容。(re库在此不作详细讲解,下次再出专题)
然后用万能匹配
.*?
来匹配图片的url。
第四步 保存图片
#遍历图片urlfor url in urls: #用replace对url中的_130_170替换为空。 #这步是为了下载大图,如果url多了_130_170就是缩减图了 urlsd = url.replace('_130_170', '') #准备图片的名字 file_name = urlsd.split('/')[-1] #对图片url进行请求,传入headers参数 res_=requests.get(urlsd,headers=headers) #进行图片保存; #with open是不断打开文件夹然后保存图片; #r'D:\untitled1\爬虫④\美桌网_爬取杨洋图片【入门】\杨洋图片\{}'这是保存路径,r是转义字符 #wd是进行二进制保存 #format(file_name)是把图片的名字传入{}中 #as f 是对前面的代码命名为 f with open(r'D:\untitled1\爬虫④\美桌网_爬取杨洋图片【入门】\杨洋图片\{}'.format(file_name),'wb') as f: #保存 f.write(res_.content)
运行后,查看下成果,都是高清大图。
五、完整代码
# -*-codEing = utf-8 -*-#导入依赖库import requestsimport re#构建请求头,模拟浏览器headers={ 'User-Agent':'Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3987.162Safari/537.36' } #请求数据res=requests.get('http://www.win4000.com/meinv215413.html',headers=headers).text#解析图片urls=re.findall(' ',res)#保存图片for url in urls: urlsd = url.replace('_130_170', '') file_name = urlsd.split('/')[-1] res_=requests.get(urlsd,headers=headers) with open(r'D:\untitled1\爬虫④\美桌网_爬取杨洋图片【入门】\杨洋图片\{}'.format(file_name),'wb') as f: f.write(res_.content)
六、结语
1.本文简单的介绍python爬虫的基本步骤、反爬措施,如何分析网页,如何请求数据、提取数据和保存数据。
2.本文因为是新手教程且代码量以及图片较少,所以未使用函数式编程以及多线程爬取。
3.本文只爬取了少量的图片,有点大材小用。爬虫一般是用于爬取大量数据,如果数据量少的话,一般不会使用。
4.下篇文章将在此篇文章的基础之上,进行多页爬取。
注:本文以及图片仅用于学习以及知识交流!如果侵权,请告知删除!
扫码识别关注我