栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【python分布爬虫】1-1.requests库的基本使用

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【python分布爬虫】1-1.requests库的基本使用

1.requests库
虽然python的标准库中urllib模块已经包含了平常我们使用的大多数功能,但是它的API使用起来让人感觉不太好,而 Requests宣传的是“HTTP for Human”,说明使用更简洁方便
1.1.最简单的发送get请求就是通过requests.get来调用:

response=request.get("http://www.baidu.com")

1.2.添加headers和查询参数:
如果想添加headers,可以传入headers参数来增加请求头中的header信息。如果要将参数放在url中传递,可以利用params参数。相关示例代码如下:

response = requests.get('https://www.baidu.com/s', params=params, headers=headers)

2.requests基本操作

import requests

response=requests.get("http://www.baidu.com")
print(type(response.text))  # str类型
print(response.text)    # 结果显示中文的是乱码(没啥用)

print(type(response.content))   # bytes类型
print(response.content.decode('utf-8'))
# 使用decode('utf-8')进行解码为str类型

print(response.url)     # 表示当前访问的url
print(response.encoding)    # 表示当前的编码方式
print(response.status_code) # 表示状态码

3.get请求方式

import requests
'''
当发送请求的时候需要传递一些参数,那么该怎么去传?
    首先传入的参数使用的是字典形式 如:kw={'wd':'中国'}
    1.当发送的是get请求,需要传参时用的是params
    2.当发送的是post请求,需要传参时用的是data
'''

params = {
    'wd': '中国'
}
headers = {
    'User-Agent': 'Mozilla/5.0 ',
    'Cookie': 'BIDUPSID=0C8AC3AF3D69B268510CA09D14; PSTM=1653105; BD_UPN=12314753; '
              'BAIDUID=5C54723A643BE57083237950AAF6:FG=1; '
     # 当时不添加cookie只添加User-Agent,访问百度会出现图形验证信息(识别出爬虫了)
            
}
# 当传入参数的时候,url链接后应添加一个s
response = requests.get('https://www.baidu.com/s', params=params, headers=headers)

print(response.url)

当时不添加cookie只添加User-Agent,访问百度会出现图形验证信息(识别出爬虫了):


当访问链接时,出现百度安全验证:

当添加cookie信息,进行伪装浏览器的时候:

点击链接出现:

4.关于requests库的总结:

总结:
1.发送get请求:
发送get请求,直接调用‘requests.get’就可以了,想要发送什么类型的请求,就调用什么方法。
2.responses的一些属性:
2.1:接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()

    response=requests.get("http://www.baidu.com/s",param=kw,headers=headers)

2.2:查看响应内容,response.text 返回的是Unicode格式的数据

   response.text

2.3:查看响应内容,response.content返回字节流数据

response.content

2.4:查看完整url地址

  response.url

2.5:查看响应头部字符编码

  response.encoding

2.6:查看响应码

 response.status_code

3.response.text和response.content的区别:
3.1:response.content:这个是直接从网络上面抓取的数据,没有经过任何解码。所以是一个bytes
类型。其实在硬盘上和在网络上传输的字符串都是bytes类型
3.2:response.text:这个是str数据类型,是requests库将response.content进行解码的字符串。解码需要
指定一个编码方式,requests会根据自己的猜测来判断编码的方式。所以有时候可能会猜测错误,
就会导致解码产生乱码。这时候应该使用:

 response.content.decode('utf-8')
	进行手动解码
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号