建筑兔零基础自学记录69|爬虫Requests-2

Requests库初步尝试

#导入requests库
import requests
#requests.get读取百度网页
r=requests.get('http://www.baidu.com')
#输出读取网页状态
print(r.status_code)
#输出网页源代码
print(r.text)

HTTP 状态码是三位数字,用于表示 HTTP 请求的结果。常见的状态码有:

  • 200:表示请求成功。
  • 404:表示请求的资源不存在。
  • 500:表示服务器内部出错。

所以只有200是成功,其他都是失败!

运行代码看到200成功读取网页,并解读了网页源代码

一、Requests库主要七个方法

 

1、 requests.get('http://www.baidu.com')

这就是刚开始我们获取百度网页的方法,非常常用。

注意这里的网址是要http开头的,如果只有www则会报错

#输出r对象的类型,即requests.models.Response
print(type(r))
#输出HTTP 头部信息
print(r.headers)

2、六个方法之间关系

3、PATCHPUT区别

  假设URL位置有一组数据UserInfo,包括UserID、UserName等20个字段

需求:用户修改了UserName,其他不变

  • 采用PATCH,仅向URL提交UserName的局部更新请求(局部改)
  • 采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除(整体改)

PATCH的最主要好处:节省网络带宽

二、Response对象的属性

 让我们来解读一下网页的编码方式:

import requests
r=requests.get('https://www.sina.com.cn/')
print(r.status_code)
print(r.text)
#输出网页header中得出的编码方式
print(r.encoding)
#输出网页内容中分析得出的编码方式
print(r.apparent_encoding)

可以看到解析内容看不懂

r.encoding得出新浪的编码方式 ISO-8859-1
r.apparent_encoding分析出新浪推测的编码方式utf-8

在中文网页中只有utf-8才能读出内容

当我们在代码中添加r.encoding = 'utf-8' 才可以解读出网页内容

 

三、Response库可能发生的异常

 

四、★★★爬取网页的通用代码框架

这是一个通用的代码:

import requests

def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()    #如果状态不是200,引发HTTPError异常
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return "产生异常"

if __name__=='__main__':
    url='https://www.sina.com.cn/'
    print(getHTMLText(url))

运行代码可得

如果在网站中删除http则会报错

 

五、HTTP协议

HTTP是一个基于“请求与响应”模式的、无状态的应用层协议

HTTP协议采用URL作为定位网络资源的标识,URL格式如下:

http://host[:port][path]

  • host: 合法的Internet主机域名或IP地址
  • port: 端口号,缺省端口为80
  • path: 请求资源的路径

URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

六、总结

  • r.status_code:200是成功
  • requests.get('http://www.baidu.com')
  • PATCH局部更新   /  PUT全局更新
  • r.encoding得出编码方式
  • r.apparent_encoding推测编码方式
  • 添加r.encoding = 'utf-8' 才可以解读出网页内容
  • 爬虫通用代码框架:

import requests

def getHTMLText(url):
    try:
        r=requests.get(url,timeout=30)
        r.raise_for_status()    #如果状态不是200,引发HTTPError异常
        r.encoding=r.apparent_encoding
        return r.text
    except:
        return "产生异常"

if __name__=='__main__':
    url='https://www.sina.com.cn/'
    print(getHTMLText(url))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值