requests模块的get方法
1、response = requests.get(
url=请求url地址,
headers = 请求头字典,
params=请求参数字典,
)
2、get请求一般带参数,带参数就将参数封装到params字典中就可以了。
案例:新浪新闻,两种分装params请求参数方式
3、response对象
(1)响应正文:
a、字符串格式的响应正文:response.text
b、字节类型(bytes)的响应正文:response.content
(2)响应正文的乱码问题解决:
a、encode和decode就是二进制和字符串之间转换方法。
编程里面数据载体
存储用变量或者常量
可以看到数据的内容一定是字符串格式。
正常的计算机数据本质都是二进制–bytes。
str.encode(‘编码’)—>bytes《-----》bytes(str,encoding=‘编码’)
bytes.decode(‘编码’)---->str《-----》str(bytes,encoding=‘编码’)
乱码:编解码不一致造成的。
response.content.decode(‘页面的正确编码’)—得到页面正确的字符串内容
b、response.text之所以可以获取字符串格式,其实在requests模块的底层用
response.encoding这个属性所对应的编码来将二进制内容变成字符串。其实就是response.encoding所对应的编码错了。只需要指定正确的即可。
response.encoding这个属性值值是requests模块自动识别。
response.encoding='页面正确编码'
response.text---》正确的页面内容
如果response.text乱码了,可以先给response.encoding设置正确编码,在通过response.text就可以获取正确的页面内容。
内置函数&内置模块:python自带的模块
dir()
str()
(3)状态码:response.status_code
(4)响应头:response.headers
4、分页如何实现?
分页的请求的每一页url基本上都是通过get请求的一个请求参数决定的,所以其实只需要通过get请求的params字典中的分页字段找到规律,就可以了。
requests post请求
response = requests.post(
url = 请求url地址,
headers = 请求头字典,
data=请求数据字典,
)—response对象。
数据的分类
1、分类
(1)结构化数据:能用关系型数据库描述的数据。
特点:数据以行为单位,一行数据表示一、个实体的信息,每一行的数据的属性是相同的。
举例:关系数据库中存储的表
处理方法:sql—结构化查询语言—语言—可以在关系型数据库中对数据的操作。
(2)半结构化数据:拥有自描述结构数据
特点:包含相关标记,用来分隔语义元素以及对记录和字段进行分层----也别成为自描述结构
举例:html,xml,json。
处理方法:正则,xpath(xml,html)
(3)非结构化数据:
特点:没有固定结构的数据。
举例:文档,图片,视频,音频等等,都是通过整体存储二进制格式来保存的。
如果下载视频,音频。
处理:
response = requests.get(url=‘视频的地址’)
保存response.content即可,文件名称后要注意。
2、json(json(JavaScript Object Notation,JS对象标记))数据
json是一种数据【交换】的格式。
json是如何来进行交换的。
【json其实是在js语言中,用’字符串’的形式来表示json中的对象和数组的一种技术。】所以json本质上是字符串。
js中的对象:var obj = {name:‘zhangsan’,age:‘10’}----在python中这个可以当成:字典
js中的数组:var arr = [‘a’,‘b’,‘c’,‘d’]----在python中这个可以当成:list。
3、json数据的处理(重点)
(1)使用json模块处理。
json_str:json数据
json.loads(json_str)—>python的list或者字典
json.dumps(python的list或者字典)—>json_str
(2)在requests模块中,response对象有个json方法,可以直接得到相应json字符串解析后的内容
response.json()—>python的list或者字典
4、json作用
JSON作为数据包格式传输的时候具有更高的效率,这是因为JSON不想xml那样具有严格的闭合标签,这就让有效数据量与总数据包比大大提升,从而减少同等数据流量的情况下,网络的传输的压力大大减低。