前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python爬虫入门|教你简单爬取爱豆的图片

python爬虫入门|教你简单爬取爱豆的图片

作者头像
Python与Excel之交
发布2021-08-05 11:04:12
1.4K0
发布2021-08-05 11:04:12
举报
文章被收录于专栏:Python与Excel之交

一、前言

爬虫是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,以及网页是静态网页,那么就可以正式写代码了。

第一步 导入依赖库

代码语言:javascript
复制
#网络请求库
import requests
#网页解析库 
import re 

re库是python自带的,不需要安装;

requests是外部库,需要用命令行进行安装,具体操作:按住键盘的windows+R键,调出运行窗口,在输入框输入cmd,然后复制命令行:pip install requests到弹出的窗口。

第二步 模拟浏览器,请求数据

代码语言:javascript
复制
#模拟浏览器
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等参数。

代码语言:javascript
复制
#请求数据
res=requests.get('http://www.win4000.com/meinv215413.html',headers=headers).text

这里用到requests库中的get请求,之所以是get请求,可以点击鼠标右键,然后点击检查;或者点击键盘的F12进行查看,具体操作可以看下图。

把headers参数传进去;text是为了请求网页的源代码。

第三步 解析网页,获取图片url

代码语言:javascript
复制
#解析图片
urls=re.findall('data-original="(.*?)" alt="杨洋黑色西装酷帅品牌活动图片"',res)

从上面的分析网页可以知道,我们发现图片的url存在data-original中,我们直接用re中的findall方法进行提取。然后用()括住data-original中的url,括号是表示需要的内容。(re库在此不作详细讲解,下次再出专题)

然后用万能匹配.*?来匹配图片的url。

第四步 保存图片

代码语言:javascript
复制
#遍历图片url
for 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)

运行后,查看下成果,都是高清大图。

五、完整代码

代码语言:javascript
复制
# -*-codEing = utf-8 -*-
#导入依赖库
import requests
import 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('data-original="(.*?)" alt="杨洋黑色西装酷帅品牌活动图片"',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.下篇文章将在此篇文章的基础之上,进行多页爬取。

注:本文以及图片仅用于学习以及知识交流!如果侵权,请告知删除!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与Excel之交 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、爬虫的基本步骤
    • 注:本文以及图片仅用于学习以及知识交流!如果侵权,请告知删除!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档