先直接附上一段爬虫代码,最最简单的爬虫网页:
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
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