版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34120459/article/details/87069954
一、Requests简单入门
1、Requests库的简介
request库是python的第三方库,它也是目前公认的爬取网页最好的第三方库,其特点是:简单、简洁,甚至用一行代码就能从网页上获取相关资源。
2、requests库的安装方法
-
按住windows+R键,在窗口中输入cmd,打开命令提示符
-
pip install requests
-
安装成功提示
3、request使用的简单实例
import requests
r = requests.get('https://www.bilibili.com/') #获取哔哩哔哩首页信息
print(r.status_code)
r.encoding = 'utf-8' #将其编码设置为utf-8,否则会乱码
print(r.text) #将哔哩哔哩首页信息打印出来
运行结果:
二、Requests库的7个主要方法
方法 | 说明 |
---|---|
requests.request() | 构造一个请求,支撑以下各种方法的基础方法 |
requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET |
requests.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST |
requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() | 向HTML网页提交局部修改请求,对应于HTTP的PATCH |
requests.delete() | 向HTML网页提交删除请求,对应于HTTP的DELETE |
1、r = requests.get(url)
返回一个包含服务器资源的 Response 对象
构造一个向服务器请求资源的 Request 对象
- requests.get()函数的完整使用方法:
源代码:
url: 获取页面的url链接
paramas: url中的额外参数,字典或者字节流格式,可选
kwargs: 12个控制访问的参数
2、Response对象
import requests
r = requests.get('https://www.bilibili.com/') #获取哔哩哔哩首页信息
print("状态码是:")
print(r.status_code)
print("类型是:")
print(type(r))
print("头信息是")
print(r.headers)
3、Response对象属性
属性 | 说明 |
---|---|
r.status_code | HTTP请求的返回状态,200表示连接成功,404表示失败 |
r.text | HTTP响应内容的字符串形式,即:url对应的页面内容 |
r.encoding | 从HTTPheader中猜测的响应内容编码方式 |
r.apparent_coding | 从内容中分析出响应的内容编码方式(备选编码方式) |
r.content | HTTP响应内容的二进制形式 |
import requests
r = requests.get('https://www.baidu.com/') #获取百度首页信息
print('encoding:',r.encoding)
print('apparent_encoding:',r.apparent_encoding)
'''
运行结果:
encoding: ISO-8859-1
apparent_encoding: utf-8
'''
理解Response的编码:
r.encoding: 如果header中不存在charset,则认为编码为ISO-8859-1
r.apparent_encoding: 根据网页内容解析出的编码方式
三、爬取网页的通用爬虫框架
import requests
def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status() #不成功则抛出HTTPError异常
r.encoding = r.apparent_encoding
return r.text
except:
return "Error"
if __name__ == '__main__':
url = 'http://www.baidu.com'
print(getHTMLText(url))