python学习用笔记——爬虫入门:requests库基础和部分实例


一:Requests库基础

requests库是在网络爬虫中最简单也是最基本的一个第三方库,需要自行在系统中安装好才能使用。

Requests库的基本方法

方法说明
requests.request()构造一个请求,支撑以下方法的方法
requests.get()获取HTML网页的主要方法,对应于HTML的GET
requests.head()获取HTML网页头信息的方法,对应于HTML的HEAD
requests.post()向HTML网页提交post请求的方法,对应于HTML的POST
requests.put()向HTML网页提交put请求的方法,对应于HTML的PUT
requests.patch()向HTML网页提交局部修改请求,对应于HTML的PATCH
requests.delete()向HTML页面提交删除请求,对应于HTML的DELETE

requests.get()方法

r = requests.get(url)构造了一个向服务器请求资源的Request对象,这个对象是Requests库内部生成的。而返回时,返回一个包含了服务器所有相关资源的Response对象。

requests.get(url,params=None,**kwargs)
url:拟获取页面的url链接
params:url中的额外参数,字典或字节流格式,可选
**kwargs:12个控制访问的参数

Response对象包含了爬虫返回的内容,也包含了我们请求的信息。
Response对象有以下属性:

属性说明
r.status_codeHTTP请求的返回状态,200则表示连接成功,404表示连接失败(不是200的也全部都是失败)
r.textHTTP响应信息的字符串形式,即url对应的页面内容
r.encoding1从HTTP header中猜的响应内容编码模式
r.apparent_encoding从内容中分析出的响应内容编码模式(备选编码模式)
r.contentHTTP响应内容的二进制形式

Request库中常见的异常

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

爬取网页的通用代码框架

import requests
def getHTMLText(url):
	try:
		r = requests.get(url, timeout = 30)
		r.raise_for_status()
		r.encoding = r.append_encoding
		return r.text
	except:
		return "产生异常"
if _name_ == "__main__":
	url == "https://www.baidu.com"
	print(getHTMLText(url))

requests.request()

这个方法的完整表示为

requests.request(method,url,**kwargs)

其中method代表请求方式,包括上面介绍过的几种。
而**kwargs表达控制访问的参数,有如下几种

params:字典或字节序列,作为参数增加到url中
data:字典,字节序列或文件对象,作为Request的内容
json:json格式的内容,作为Request的内容
headers:字典,HTTP定制头
cookies:字典或CookieJar,Request中的cookie
auth:元组类型,支持HTTP认证功能
files字典类型,传输文件
timeout:设置超时时间,以秒为单位
proxies:设置访问代理服务器,可以增加登录认证
allow_redirects:True/False 默认为True,重定向开关
stream:True/False 默认为True,获取内容立刻下载开关
verify:True/False 默认为True,认证SSL证书开关
cert:本地SSL证书路径

Robots协议

Robots Exclusion Standrad ——网络爬虫排除标准

作用:网站告知网络爬虫哪些页面可以抓取,哪些不行。
形式:网站根目录下的robots.txt文件

案例:京东的robots协议

User-agent: *
Disallow: /?*
Disallow: /pop/.html
Disallow: /pinpai/
.html?*
User-agent: EtaoSpider
Disallow: /
User-agent:HuihuiSpider
Disallow:/
User-agent:GwdangSpider
Disallow:/
User-agent:WochachaSpider
Disallow:/

*代表所有 /代表根目录

网络爬虫应当能够自动或人工的识别robots文件的内容,再进行内容爬取。

实例1:爬取京东的商品页面信息

import requests
url = "https://item.jd.com/100004770249.html"
try:
	r = requests.get(url)
	r.raise_for_status()
	r.encoding = r.apparent_encoding
	print(r.text[:1000])
exceptprint("爬取失败")

  1. 如果网页的header中不存在charset,则认为编码是ISO-8859-1 ↩︎

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值