数据科学、数据分析、人工智能必备知识汇总-----Python爬虫-----持续更新:https://blog.csdn.net/grd_java/article/details/140574349 |
---|
文章目录
- 一、安装和基本使用
- 二、get请求
- 三、post请求
- 四、代理
一、安装和基本使用
- 和解析库urllib几乎一摸一样,但是有些业务场景,用request更加方便
最好对比utllib学习:https://blog.csdn.net/grd_java/article/details/140589367
- 官方文档:https://requests.readthedocs.io/projects/cn/zh-cn/latest/
安装requests |
---|
- 执行命令pip install requests即可安装
- 代码中导包不报错表示安装成功
基本使用 |
---|
'''导包(start)'''
import requests
'''导包(end)'''
url = 'http://www.baidu.com'
# 通过get方式请求url
response = requests.get(url)
# 设置编码格式
response.encoding = 'utf-8'
# response对象的类型为Response类型,和urllib的HttpResopnse对象是不一样的
print(type(response))
# 以字符串形式返回网页源码
print(response.text)
# 获取响应状态码
print(response.status_code)
# 获取请求的url
print(response.url)
# 获取响应头
print(response.headers)
# 获取响应的字节类型
print(response.content)
二、get请求
同样是百度,例如百度北京看搜索结果。requests库作为独属于python的,是不需要像urllib一样对参数编码的
'''导包(start)'''
import requests
'''导包(end)'''url = 'http://www.baidu.com/s?' # 路径中的?可加可不加
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"}
data = {'wd':'北京'
}
# def get(url, params=None, **kwargs):
# url 请求资源路径
# params 参数
# kwargs 字典
response = requests.get(url=url, params=data, headers=headers)
content = response.text
print(content)
可见对比urllib有以下几点不同
- 参数使用params传递
- 参数无需urlencode编码
- 不需要请求对象的定制
- 请求资源路径(url)中的?可以加也可以不加
三、post请求
我们使用讲解urllib中的百度翻译的案例,看看实现同样的效果和urllib有何区别
- post请求,不需要编解码
- 请求参数是经典的data
- 不需要请求对象的定制
'''导包(start)'''
import requests
'''导包(end)'''url = 'https://fanyi.baidu.com/sug'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"}
data = {"kw":"spider"
}
# def post(url, data=None, json=None, **kwargs):
# url 请求资源路径
# data 参数对象
# json json对象
# kwargs 字典
# 我们以传输data对象为例,传输json同理,将data换成json即可
response = requests.post(url=url, data=data, headers=headers)
content = response.text
# 因为content返回的不是utf-8编码格式,我们看起来比较费劲
# 通过json库将其转为utf-8
import json
obj = json.loads(content)
print(obj)
四、代理
依然和urllib完全一样的操作
'''导包(start)'''
import requests
'''导包(end)'''url = 'http://www.baidu.com/s?'
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"}
data = {"wd":"ip"
}
# 1. 获取代理handler对象,并指定代理ip字典proxies
proxies = {'http': '218.87.205.38:20433',
}
response = requests.get(url = url, params=data, headers=headers,proxies=proxies)
content = response.text
with open('daili.html','w',encoding='utf-8') as fp:fp.write(content)