Python网络爬虫与信息提取

教程地址:

https://www.icourse163.org/course/BIT-1001870001?tid=1001962001

第一单元:Requests库入门

1.1 requests库的7个主要方法

方法说明
1. requests.request()构造一个请求,支撑其它方法
2. get()获取网页,构造一个向服务器请求资源的Request对象
3. head()获取网页头信息的方法
4. post()向网页提交post请求的方法
5. put()向网页提交put请求的方法
6. patch()向网页提交局部修改请求
7. delete()向网页提交删除请求
  1. get()方法
    格式:requests.get(url, params=None, **kwargs)
    参数
    url:URL for the new : class: Request object.
    功能
    r = requests.get(url)get()函数构造一个向服务器请求资源的Request对象,
    返回值
    return request('get', url, params=params, **kwargs)
    返回Response对象,Response对象包含从服务器返回的所有信息,

1.2 Response对象的属性


status_code # 请求的返回状态,200表示连接成功,400表示失败
text  # url对应的页面内容
encoding # 从HTTP header中猜测的响应内容,从header中的charset字段获得,若没有charset,则默认ISO-8859-1编码,它不支持中文,apparent_encoding可能更准确。
apparent_encoding # 从内容中分析出的响应内容编码方式(备选编码方式)
content # HTTP响应内容的二进制形式

流程:
判断status_code,若是200,则利用text、encoding、apparent_encoding

1.3 Requests库的异常

  1. ConnecttionError
    网络连接错误异常,如DNS查询失败、拒绝连接等

  2. HTTPError
    HTTP错误异常

  3. URLRequired
    URL缺失异常,

  4. TooManyRedirects
    超过最大重定向次数,产生重定向异常

  5. ConnectTimeout
    连接远程服务器时异常

  6. Timeout
    请求URL超时,产生超时异常,指的是整个请求过程的超时,而ConnectTimeout指的是连接过程。

1.4 操作异常的方法

raise_for_status()方法,如果不是200,产生HTTPError异常

1.5 爬取网页的通用代码框架

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 = 'http://www.baidu.com'
	print(getHTMLText(url))
	url1 = 'www.baidu.com'
	print(getHTMLText(url1))

1.6 HTTP协议对资源的操作

方法说明
GET请求获取URL位置的资源
HEAD请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST请求向URL位置的资源后附加新的数据
PUT请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE请求删除URL位置存储的资源

1.6.1 HTTP协议与 Requests库关系

HTTP协议方法Requests库方法功能一致性
GETrequests.get()一致
HEADrequests.head()一致
POSTrequests.post()一致
PUTrequests.put()一致
PATCHrequests.patch()一致
DELETErequests.delete()一致

1.7 requests库中request方法

格式
requests.request(method, url, **kwargs)
参数

  • method : 请求方式,对应get/put/post等7种
    r = requests.request(‘GET’, url, **kwargs)
    r = requests.request(‘HEAD’, url, **kwargs)
    r = requests.request(‘POST’, url, **kwargs)
    r = requests.request(‘PUT’, url, **kwargs)
    r = requests.request(‘PATCH’, url, **kwargs)
    r = requests.request(‘delete’, url, **kwargs)
    r = requests.request(‘OPTIONS’, url, **kwargs)
  • url : 拟获取页面的url链接
  • kwargs: 控制访问的参数,共13个,均为可选项
  1. params : 字典或字节序列,作为参数增加到url中

     	>>> kv = {'key1': 'value1', 'key2': 'value2'}
     	>>> r = requests.request('GET', 'http://python123.io/ws', params=kv)
     	>>> print(r.url)
     	http://python123.io/ws?key1=value1&key2=value2
    

  1. data : 字典、字节序列或文件对象,作为Request的内容

     >>> kv = {'key1': 'value1', 'key2': 'value2'}
     >>> r = requests.request('POST', 'http://python123.io/ws', data=kv)
     >>> body = '主体内容'
     >>> r = requests.request('POST', 'http://python123.io/ws', data=body)
    

  1. json : JSON格式的数据,作为Request的内容

     >>> kv = {'key1': 'value1'}
     >>> r = requests.request('POST', 'http://python123.io/ws', json=kv)
    

  1. headers : 字典,HTTP定制头

     >>> hd = {'user‐agent': 'Chrome/10'}
     >>> r = requests.request('POST', 'http://python123.io/ws', headers=hd)
    

  1. cookies : 字典或CookieJar,Request中的cookie

  2. auth : 元组,支持HTTP认证功能

  3. files : 字典类型,传输文件

     >>> fs = {'file': open('data.xls', 'rb')}
     >>> r = requests.request('POST', 'http://python123.io/ws', files=fs)
    

  1. timeout : 设定超时时间,秒为单位

     >>> r = requests.request('GET', 'http://www.baidu.com', timeout=10)
    

  1. proxies : 字典类型,设定访问代理服务器,可以增加登录认证

     >>> pxs = { 'http': 'http://user:pass@10.10.10.1:1234'
     'https': 'https://10.10.10.1:4321' }
     >>> r = requests.request('GET', 'http://www.baidu.com', proxies=pxs)
    

  1. allow_redirects : True/False,默认为True,重定向开关
  2. stream : True/False,默认为True,获取内容立即下载开关
  3. verify : True/False,默认为True,认证SSL证书开关
  4. cert : 本地SSL证书路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蔚蓝慕

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值