Python抓取图片

什么是爬虫

爬虫技术:从海量的互联网数据中自动高效的获取我们需要点信息。

定义:请求网站并提供数据的‘自动化’程序。

可以模拟浏览器并自动化从互联网中获取数据的程序。

爬虫的分类

• 通用网络爬虫
• 聚焦爬虫
• 增量式爬虫
• 深层爬虫

君子协定

域名/robots.txt  //查看是否允许爬虫

技术扫盲

(一)
1.客户端 2. 服务器
客户端: 上网的用户。      例如:逛淘宝的我们
服务器: 提供网站的商家。  例如:阿里巴巴

• 逛网站的流程:
1. 客户端 向 服务器 发送请求
2. 服务器接收到请求后,返回一个响应
3. 其中: 客户端就是我们电脑上的浏览器软件,网址相当于目标服务器,服务器本质是别人的电脑的一个软件。
4. 请求: 由客户端发送到服务器的一个信息,用于申请网页。
响应: 由服务器返回到客户端的一个信息,一般是网页,字符串,图片,音乐等内容。

(二)
HTTPHTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,
是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

HTTPS :
	(全称:Hyper Text Transfer Protocol over SecureSocket Layer),
	是以安全为目标的 HTTP 通道,
在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。

(三)
请求的分类:
1. GET请求:可以携带数据,是明文请求,不安全
例如地址栏发送的请求
2. POST请求:密文请求,数据进行了加密,安全
例如表单提交(登录注册)
3. 其他请求:
PUT请求 DELETE请求 HEAD请求 OPTIONS请求 CONNECT TRACE 

(四)
URL: 统一资源定位系统(uniform resource locator;URL)是因特网的万维网服务程序上用于指
定信息位置的表示方法。
简单的来说,就是一个网址或一个地址,用于访问。
这个地址一般包括了服务器地址和服务器中网页的地址

在这里插入图片描述
请求的结构:
在这里插入图片描述
响应的结构:
在这里插入图片描述

爬虫的流程(敲重点啦!!!)

1. 发起请求:
通过HTTP库向目标站点,发起请求,请求可以包含额外的headers等信
息,等待服务器响应。

使用python的请求库调用发送请求的方法,即可发送请求。
• 常见的http请求库有:
• urllib系列 requests请求库 

2. 获取响应内容:
如果服务器能正常响应,会得到一个response,其内容是索要获取的
页面内容,类型可能有HTML,Json字符串,二进制数据(图片,视频)等类型
的内容。

• 使用python的请求库不仅可以发送请求,还可以获得响应内容。
• 得到的响应内容一般是不能直接使用的,需要交给解析库进行解析 。

3. 解析内容:
得到内容如果是HTML,则使用析库进行解析
如果是JSON,可以直接转为JSON对象解析
如果是二进制数据,可以直接做保存或者进一步的处理。

• 使用python的解析库对拿到的响应内容,进行解析。
• 常用的解析库有:
• BeautifulSoup,lxml-xpath,re 

4. 保存数据:
保存形式多样,可以转存为文本,也可以保存至数据库,或者保为存
特定格式的文件。

使用数据库进行存储
• 常用的数据库有:
• mysql oracle mariaDB redis mongoDB 等 

request是模块的安装

1. 基于urllib编写的HTTP请求库
• 2. 更加具有Python的风格,操作更加人性化
• 3. 爬虫中最常用的方式
• 4. 是第三方模块,需要额外安装

• 安装指令: pip install requests (可以使用pycharm安装)
• 导入模块: import requests 

requests模块应用

• 发送get请求: get(url, params=None, **kwargs)
url:访问路径 param:请求参数 headers:请求头内容

• 发送post请求:post(url, data=None, json=None, **kwargs)
url:访问路径 data:请求数据 headers:请求头内容

• 注意:
	发送get/post请求,本质上都是创建了以请求对象,把请求信息放入
到请求对象,底层会自动发送相关数据。

	同时,发送请求后,都会得到一个响应对象,响应对象包含了响应回
来的所有内容(例如网页源代码,图片,json串等)这样我们就可以对响应
的数据进行处理。

requests对象点属性

• 想要拿出对应的数据,可以调用响应对象的不同属性,产生不同效果
• encoding:设置响应编码
• text:返回响应内容的str形式(默认unicode编码方式)
• status_code:返回状态码
# 200:响应成功
# 403:禁止访问---反爬
# 404:数据丢失
# 500:服务器系统错误
• content:返回响应内容的二进制形式
• cookies:返回cookies信息对象
• headers:返回请求头内容
• json:采用json格式输出响应内容

网页分析

• 使用Chrome(谷歌浏览器)
点击F12开启后台抓包工具
访问百度首页就可以看到
网页上的各种信息

• 调试工具中的工具栏:
 Network 中可以看到所有的响应内容
 Doc是Network的子工具,它包括当前的所有html页面
 
• 这里是任何一个调试信息的标签:
• Headers:头信息
• Prewview:视图信息
• Response:响应信息

在这里插入图片描述

数据爬取与反爬虫

• 常见的反爬虫机制与策略
• 1. 通过分析用户请求的Headers信息进行反爬虫
• 网站中应用的最多
• 2. 通过验证用户行为进行反爬虫,
• 例如:通过判断同一个IP在短时间内是否频繁访问对应网站等
进行分析
• 3. 通过动态页面增加爬虫爬取的难度,达到反爬虫的目的

• 对应措施:
• 1. 在爬虫站控构造用户请求的Headers信息,将爬虫伪装成浏览器
• 2. 使用代理服务器并经常切换代理服务器(IP)
• 3. 利用工具
调试工具: selenium (pip install selenium)

• 注意:
• 1. 反爬虫不会过于严格,因为可能会误伤到正常用户的使用
•
• 2. 反爬虫如果要严格且不伤及一般用于,则会加大研发成本
• 3. 简单且低级的爬虫,爬取效率高,但是伪装度低,容易被检测
• 4. 高级爬虫,伪装度高,不易备检测,服务器压力较小,但是爬取效率低

上代码

import requests,re
#1.发起请求
#2.获取响应内容
#3.获取请求
#4.存储数据
#地址在检查-Network-Dox-Headers-
url = '目标URL地址'

headers = { #字典,处理反爬,伪装是从该路径过来的
    'Referer': '伪装URL'
}
#访问目标网站

response = requests.get(url=url,headers=headers)
#print(response.text)
#获得文本数据
data_text = response.text
#对文本数据,截取出图片的路径
image_url = re.findall('middleURL":"(http://img.*?\.jpg)',data_text)#正则表达式
print(image_url)

#设置计数器,用于重命名爬取的图片
n=0
#遍历 图片的链接
for url in image_url:
    #重新发起图片请求
    n+=1
    res=requests.get(url=url,headers=headers)
    print(res.content)
    #res中已经有图片数据---二进制数据
    #使用python的open()函数进行存储
    with open('%d.jpg'%n,'wb') as f:#保存路径
        #存
        f.write(res.content)

特别注意

仅供参考学习,转载请附上原文链接
图片来源于网络、个人收藏、个人制作
该篇文章不做任何商业用途,纯属分享学习心得,如有侵权,望联系本人处理
还在读大学的程序员,项目经验少,如有纰漏,感谢指正
需要源代码请私聊联系本人
谢谢配合

如果这篇文章对您有帮助,小小的点个赞,算是给小学弟的鼓励吧!谢谢大佬!!/呱呱.jpg

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值