作者介绍:Python领域优质创作者、华为云享专家、阿里云专家博主、2021年CSDN博客新星Top6
- 本文已收录于Python全栈系列专栏:《100天精通Python从入门到就业》
- 此专栏文章是专门针对Python零基础小白所准备的一套完整教学,从0到100的不断进阶深入的学习,各知识点环环相扣
- 订阅专栏后续可以阅读Python从入门到就业100篇文章;还可私聊进两百人Python全栈交流群(手把手教学,问题解答); 进群可领取80GPython全栈教程视频 + 300本计算机书籍:基础、Web、爬虫、数据分析、可视化、机器学习、深度学习、人工智能、算法、面试题等。
- 加入我一起学习进步,一个人可以走的很快,一群人才能走的更远!
本文主要学习
requests
这个http模块,该模块主要用于发送请求获取响应,该模块有很多的替代模块,比如说urlib模块, 但是在工作中用的最多的还是requests模块,requests的代码简洁 易懂,相对于臃肿的urlib模块,使用requests编写的爬虫代码将会更少, 而且实现某-功能将会简单。因此建议大家掌握该模块的使用
1. window电脑点击win键+ R
,输入:cmd
2. 安装requests
,输入对应的pip命令:pip install requests
,我已经安装过了出现版本就安装成功了
方法/属性 | 说明 |
---|---|
response = requests.get(url) |
发送请求获取的响应对象(最常用) |
response = requests.post(url) |
发送请求获取的响应对象 |
response.url |
响应的url;有时候响应的ur1和请求的urI并不一致 |
response.status_ code |
响应状态码,如:200,404 |
response.request.headers |
响应对应的请求头 |
response. headers |
响应头 |
response.request.cookies |
响应对应请求的cookie; 返回cookieJar类型 |
response.cookies |
响应的cookie (经过了set- cookie动作; 返回cookieJar类型) |
response.json() |
自动将json字符串类型的响应内容转换为python对象 (dict or list) |
response.text |
返回响应的内容,str类型 |
response.content |
返回响应的内容, bytes类型 |
简单代码实现:通过requests向百度首页发送请求,获取该页面的源码
import requests
# 目标网址
url = "http://www.baidu.com/"
# 发送请求获取响应
response = requests.get(url)
# 查看响应对象的类型
print(type(response))
# 查看响应状态码
print(response.status_code)
# 查看响应内容的类型
print(type(response.text))
# 查看cookies
print(response.cookies)
# 查看响应的内容
print(response.text)
输出结果:
<class 'requests.models.Response'>
200
<class 'str'>
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>ç™¾åº¦ä¸€ä¸‹ï¼Œä½ å°±çŸ¥é“</title></head> <body link=#0000cc> å
³äºŽç™¾åº¦</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>©2017 Baidu <a href=http://www.baidu.com/duty/>使用百度å‰å¿
读</a> <a href=http://jianyi.baidu.com/ class=cp-feedback>æ„è§å馈</a> 京ICPè¯030173å· <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>
b'\r\n \xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93 \xe5\x85\xb3\xe4\xba\x8e\xe7\x99\xbe\xe5\xba\xa6 About Baidu
©2017 Baidu \xe4\xbd\xbf\xe7\x94\xa8\xe7\x99\xbe\xe5\xba\xa6\xe5\x89\x8d\xe5\xbf\x85\xe8\xaf\xbb \xe6\x84\x8f\xe8\xa7\x81\xe5\x8f\x8d\xe9\xa6\x88 \xe4\xba\xacICP\xe8\xaf\x81030173\xe5\x8f\xb7
\r\n'
3. response.text和response.content的区别:
response.text
:
- 类型:str
- 解码类型: requests模块自动根据HTTP头部对响应的编码作出有根据的推测,推测的文本编码
response.content
:
- 类型:bytes
- 解码类型:没有指定,执行挑选
通过对response.content进行decode,来解决中文乱码:
response.content.decode()
:默认utf-8
response.content.decode('GBK')
常见的编码字符集
utf-8
gbk
gb2312
asci
(读音:阿斯克码)
iso-8859-1
代码演示:
import requests
# 目标网址
url = "http://www.baidu.com/"
# 发送请求获取响应
response = requests.get(url)
# 手动设置编码格式
response.encoding = 'utf8'
# 打印源码的str类型数据
print(response.text)
# response.content是存储的bytes类型的响应数据,进行decode操作
print(response.content.decode('utf-8'))
运行结果:
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc>