一起学python爬虫第七天

本文介绍了Python爬虫中代理服务器的设置、分类及作用,强调了代理服务器在防止IP被封和提高访问速度上的价值。同时讲解了页面响应类型,特别是JSON数据的结构特点和在数据交换中的优势。
摘要由CSDN通过智能技术生成

今天给大家分享代理服务器和json数据。
代理服务器就 像我们生活中的中介一样,将自己的需求传递给另一个人。

一、代理设置

在爬虫的过程中,我们经常会遇见很多网站采取了防爬取技术,或者说因为自己采集网
站信息的强度和采集速度太大,给对方服务器带去了太多的压力。
如果你一直用同一个代理 ip 爬取这个网页,很有可能 ip 会被禁止访问网页,所以基本上做爬虫的都躲不过去 ip 的问题。
(一)代理基本原理
代理实际上指的就是代理服务器,英文叫作 proxy server,它的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站。在我们正常请求一个网站时,是发送了请求给 web 服务器,web 服务器把响应传回给我们。如果设置了代理服务器,实际上就是在本机和服务器之间搭建了一个桥,此时本机不是直接向 web 服务器发起请求,而是向代理服务器发出请求,请求会发送给代理服务器,然后由代理服务器再发送给 web 服务器,接着由代理服务器再把 web 服务器返回的响应转发给本机。这样我们同样可以正常访问网页,但这个过程中 web 服务器识别出的真实 IP 就不再是我们本机的 IP 了,就成功实现了 IP伪装,这就是代理的基本原理,如图:
在这里插入图片描述
在这里就不给大家做代码说明了。

代理服务器分类:

一、根据协议可以玩分为:
1.HTTP代理,主要用于访问网页。
2.SSL代理:用于访问安全性高的网站,SSL安全套接层。
3.Talent代理:主要用于远程控制。
4.POP3/SMTP代理: 主要用于邮件发送。

二、根据代理的匿名成都可以分为:
1.高度匿名代理(高匿代理):可以完整的将IP变成代理服务器的IP,对方追踪不到真实的IP;
2.普通匿名代理(普匿代理):对方可以追踪到真实IP;
3.透明代理:如果透明代理加密就变成了匿名代理。

代理的作用:

1.防止IP被封禁
2.使用好的代理服务器可以提高访问速度。
在这里插入图片描述

三、页面响应类型

(一)数据的结构化分类

一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值。
内容一般分为三部分, 结构化的数据、 半结构化的数据和 非结构化数据。

  1. 结构化数据:
    可以用统一的结构加以表示的数据。可以使用关系型数据库表示和存储,表现为二维形式的数据,一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行的数据的属性是相同的。
  2. 半结构化数据:
    结构化数据的一种形式,并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此他也被成为自描述的结构。常见的半结构数据有:html,xml 和 json 等、实际上是以树或者图的结构来存储的。
  3. 非结构化数据
    就是没有固定的结构。各种文档,图片,视频或者音频都属于非结构化数据。
    对于这类数据, 我们一般 直接整体进行存储,而且一般存储为二进制形式 。
(二)json 数据

Json(JavaScript Object Notation,JS 对象标记)是一种轻量级的数据交换格式。json 是js 对象的字符串表达式,他使用文本形式表示一个 js 对象的信息,本质是一个字符串。Js 中对象和数组是比较特殊并且常用的两种类型:
1.对象表示为键值对
2.数据有逗号分隔
3.花括号保存对象
4.方括号保存数组。
json 作为数据包格式传输的时候具有更高的效率,这是因为 json 不像 xml 那样具有严格的闭合标签,这就让有效数据量与总数据包比大大提升,从而减少同等数据流量的情况下,网络的传输的压力大大减低,易于阅读,有效提升网络速度。

# 1.导入json模块
import json

# json格式数据其实就是一个字符串,只不过字符串中的格式是{}/[]
# 2. 定义json格式数据,字符串里面的内容是单引号包裹的
# json_data = '{"name":"zhangsan","age":20}'

# 3. json模块方法
# 3.1 json.loads()   将json格式数据转换成python类型
# result = json.loads(json_data)
# print(result)  # {'name': 'zhangsan', 'age': 20}
# print(type(json_data))
# print(type(result))

# 3.2 json.dumps()  将python类型转换成json格式数据
# data = {'name':'zhangsan','age':20}
# res = json.dumps(data)
# print(res)  # {"name": "zhangsan", "age": 20}
# print(type(res))  # <class 'str'>

# 3.3 json.dump()    将python类型转换成json格式数据,并保存至文件
# data = {'name':'zhangsan','age':20}
# with open('json_test.txt','w',encoding='utf-8') as fp:
#     json.dump(data,fp)

# 3.4 json.load()   将json格式数据转换成python类型,并读取文件内容
with open('json_test.txt','r',encoding='utf-8') as fp:
    content = json.load(fp)
print(content)  # {'name': 'zhangsan', 'age': 20}
# print(type(content))  # <class 'dict'>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值