python网络爬虫,Requests库基础

先直接附上一段爬虫代码,最最简单的爬虫网页:

import requests

r = requests.get("https://www.baidu.com")

r.status_code

r.encoding = r.apparent_encoding

r.text

在python窗口中输入以上代码便可爬取百度首页的全部代码:,是不是很有意思呢。下面我们开始学习python爬虫的第一个库Requests,也是最最重要的基础库。

 

Python网络爬虫与数据提取Requests

选择ide

IDLE python自带的编译工具,内容在300行内进行小型项目或测试使用

Sublime Text python高级程序员喜欢使用,支持多种格式代码高亮等

Pycharm 集成IDE,支持大型项目开发,支持很多插件,工具,git等

Anacanda&Spyder 集成IDE,科学开发,科学计算

 

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() 向HTM页面提交删除请求,对应于HTTP的DELETE

 

  1. requests.request(method, url, **kwargs)
    1. mrthod:请求方式,对应get/put/post等7种
    2. url:拟获取页面的url链接
    3. **kwargs:控制访问的参数,共13个
  2. requests.get(url , params = None , **kwargs)(常用,小)
    1. url : 拟获取页面的url链接
    2. params:url中的额外参数,字典或字节流格式,可选
    3. **kwargs:12个控制访问的参数 ,可选
  3. request.head(url,**kwargs)(常用,大型网页时)
    1. url: 拟获取页面的url链接
    2. **kwargs:13个控制访问的参数
  4. request.post(url,data=None,json=None,**kwargs)
    1. url:拟获取页面的url链接
    2. data:字典,字节序列或文件,Request的内容
    3. json:JSON格式的数据,Request的内容
    4. **kwargs:11个访问的参数(同上)
  5. requests.put(url,data=None,**kwargs)
    1. url:拟获取页面的url链接
    2. data:字典,字节序列或文件,Request的内容
    3. **kwargs:12个访问的参数(同上)
  6. requests.patch(url,data=None,**kwargs)
    1. url:拟获取页面的url链接
    2. data:字典,字节序列或文件,Request的内容
    3. **kwargs:12个访问的参数(同上)
  7. requests.delete(url,**kwargs)
    1. url:拟获取页面的url链接
    2. **kwargs:13个访问的参数(同上)

 

 

method:请求方式

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) #获取服务器和客户端可以打交道的资源,使用较少

**kwargs:控制访问的参数,均为可选项, 一共13个

params:字典或字节系列,作为参数添加到url中

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

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

headers:字典,HTTP定制头(模拟游览器) ?

cookies:字典或CookieJar,Request中的Cookies ?‍?

auth:元组,支持HTTP认证功能 ?‍?

files:字典类型,传输文件

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

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

allow_redirects:True/False,默认为True ,重定向开关 ?‍??

stream:True/False,默认为True,获取内容立即下载开关 ?‍??

verify:True/False ,默认为True, 认证SSL证书开关 ?‍??

cert:本地SSL证书路径 ?‍?

#? - 熟悉掌握

#?‍? - 高级功能

# ? - 开关功能

 

Response 对象的属性

属性 说明

r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败,(除200,其他都为失败)

r.text HTTP响应内容发字符串形式,即,url 对应的页面内容

r.encoding 从HTTP header 中猜测的响应内容编码方式(提供头部charset得到编码格式 )

r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)(真正分析得到编码格式)

r.content HTTP响应内容的二进制形式

 

Requests 库的异常

异常 说明

requests.ConnectionError 网络连接错误异常,如DNS查询失败,拒绝连接等

requests.HTTPError HTTP错误异常

requests.URPLRequests URL缺失异常

requests.TooManyRedirects 超过最大重定向次数,出生重定向异常

requests,ConnectTimeout 连接远程服务器超时异常(访问时)

requests.Timeout 请求URL超时异常,产生超时异常(整个访问过程)

r.raise_for_status() 如果部署200,产生异常requests.HTTPError

 

HTTP协议

URL 格式 http://host [:port] [path]

host:合法的Internet主机域名或ip地址

port:端口号,缺省端口为80

path:请求资源的路径

 

Requests库网络爬取实战

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

实例2:亚马逊商品页面的爬取

实例3:百度/360搜索关键字提交

实例4:网络图片的爬取和存储(表示网络全部二进制格式的爬取,如:音乐,视频,图片等)

实例5:ip地址归属地的自动查询

 

搜索引擎关键词提交接口

百度的关键词接口:

http://www.baidu.com/s?wd=keyword

360的关键词接口:

http://www.so.com/s?q=keyword

关于爬虫代码,小编上传到中国码云上面,有兴趣的可以下载下来运行看看,

https://gitee.com/cyc426/python_Internet_worm/tree/master

关于爬虫的盗亦有道,在网上不做非法行为,我们需要了解的robots协议,请查看另一篇文章:

https://mp.csdn.net/postedit/92766703

 

 

你可能感兴趣的:(python)