网络爬虫之Requests库及爬取网页的通用代码框架

本文详细介绍了Requests库的7个主要方法,包括GET、POST等HTTP请求方式,并解释了如何使用这些方法进行网页抓取及数据传输。同时,文章还列举了Request对象的控制参数及其用法,以及Response对象的常见属性。

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

get方法

get方法介绍
requests.get(url, params=None, **kwargs)

  • url:拟获取页面的url
  • params:url中的额外参数,字典或字节流格式,可选
  • **kwargs:13个控制访问的参数,如下:
字段说明示例
params字典或字节序列,作为参数增加到url中kv = {'key1':'value1', 'key2':'value2'}
r = requests.request('GET','http://www.python123.io/ws', params=kv``print(r.url)
#https://www.python123.io/ws?key1=value1&key2=value2
data字典、字节序或文件对象,作为Request的内容kv = {'key1':'value1', 'key2':'value2'}
r = requests.request('GET','http://www.python123.io/ws', data=kv)
jsonJSON格式数据,作为Request的内容kv = {'key1':'value1'}
r = requests.request('POST','http://www.python123.io/ws', json=kv)
headers字典,HTTP定制头hd = {'user-agent':'Chrome/10'}
r = requests.request('POST','http://www.python123.io/ws', headers=hd)
cookies字典或cookieJar,Request中的cookie
auth元组,支持HTTP认证功能
files字典类型,传输文件fs = {'file':open('test.xls', 'rb')}
r = requests.request('POST','http://www.python123.io/ws', files=fs)
timeout超时时间,秒为单位r = requests.request('GET','http://www.python123.io/ws', timeout=10)
proxies字典类型,设定访问服务器,可以增加登陆认证pxs = {'http':'http://user:pass@10.10.1:1234',
'https':'https://10.10.10.1:4321'}
r = requests.request('GET','http://www.python123.io/ws', proxies=pxs)
allow_redirectsTrue/False,默认为True,重定向开关
streamTrue/False,默认为True,获取内容立即下载开关
varifyTrue/False,默认为True,认证SSL开关
cert本地SSL证书路径

### Response对象的属性

属性说明
r.status_codeHTTP请求的状态,200表示成功,404表示失败
r.text()HTTP响应内容的字符串形式,即,url对应的页面内容
r.encoding从HTTP headers中猜测的响应内容编码格式
r.apparent_encoding从内容中分析出的响应内容编码方式
r.contentHTTP响应内容的二进制形式
r.raise_for_status()如果不是200,产生requests.HTTPError

Requests库异常

异常说明
requests.ConnectionError网络连接错误异常,如DNS查询失败、拒绝连接等
requests.HTTPErrorHttp错误异常
requests.URLRequiredURL缺失异常
requests.TooManyRedirects超过最大重定向次数,产生重定向异常
requests.ConnectTimeout连接远程服务器超时异常
requests.Timeout请求URL超时,产生超时异常

通用代码框架

import requests

def get_html_text(url):
    try:
        r = requests.get(url, timeout=30)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except :
        return ''

url = 'http://www.baidu.com'
text = get_html_text(url)#得到页面text,可进一步处理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jarlen John

谢谢你给我一杯咖啡的温暖

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值