请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

Python爬虫:数据抓取工具及类库详解

[复制链接]
查看: 11|回复: 0

1万

主题

2万

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
46392
发表于 2019-11-9 18:04 | 显示全部楼层 |阅读模式
前言

文的翰墨及图片根源于收集,仅供进修、交换利用,不具有任何贸易用处,版权归原作者全数,若有题目请实时联系我们以作处置赏罚。
作者: ncepu_Chen
PS:若有必要Python进修材料的小同伴可以加点击下方链接自行获得
http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef
数据抓取的命令行工具

curl
curl是一个利用URL语法在命令行下举行收集通讯的工具,类似于一个命令行版本的欣赏器,但不会对页面举行衬着.其用法很简单,间接在命令行中输入curl [URL地址] [参数]即可,如:
  1. curl https://www.baidu.com
复制代码
其常用参数以下:
Python爬虫:数据抓取工具及类库详解  游戏 20191109150022551
wget
wget也是一个利用URL语法在命令行情况下举行文件传输的工具,其底子用法为wget [URL地址] [参数],如:
  1. wget https://www.baidu.com
复制代码
其常用参数以下:
Python爬虫:数据抓取工具及类库详解  游戏 20191109150056770
下面例子演示怎样利用wget镜像一个网站到当地并启动:
利用wget --mirror命令将全部网站的镜像下载到当地
  1. wget --mirror -p --convert-links http://www.httpbin.org
复制代码
切换到下载好的资本目录下,利用Python自带的http.server模块开启一个微型办事器
  1. python -m http.server
复制代码
拜候localhost:8000,即可拜候我们搭建在本机上的镜像网站.
数据抓取的Python库

Python中有两个常用的抓取数据的库:urllib和requests.其中requests库封装了urllib库,且比urllib库更加文雅.是以,我们可以间接进修requests库.
requests库
request库的利用比力简单,下面是官方供给的一段示例代码:
  1. r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
  2. r.status_code               # 返回 200
  3. r.headers['content-type']   # 返回 'application/json; charset=utf8'
  4. r.encoding                  # 返回 'utf-8'
  5. r.text                      # 返回 u'{"type":"User"...'
  6. r.json()                    # 返回 {u'private_gists': 419, u'total_private_repos': 77, ...}
复制代码
requests库的简单利用

发送HTTP请求
下面几个方式可以发送HTTP请求,对应于HTTP的各类请求典范

  • requests.get(url, params=None, **kwargs)
  • requests.post(url, data=None, json=None, **kwargs)
  • requests.put(url, data=None, **kwargs)
  • requests.delete(url, **kwargs)
  • requests.head(url, **kwargs)
  • requests.options(url, **kwargs)
上面六个方式别离对应HTTP请求典范中的GET,POST,PUT,DELETE,HEAD和OPTIONS,各参数意义以下:

  • url: 请求的URL地址.
  • params: GET请求放进URL中的请求参数,以字典形式存储.
  • data: 请求体中的数据.
  • **kwargs: 该请求必要的其他参数,包含:
  • headers: 以字典格式存储的请求头内容.
  • json: 以字典形式存储的请求体中数据,同即是data参数
  • cookies: 以字典形式存储的cookies.
  • allow_redirects: 能否答应重定向,为一个布尔值
  • timeout: 设备超不时候,单元为秒
  • auth: 设备身份认证信息
分析HTTP响应

上述requests.get(), requests.post(), requests.put(), requests.delete(), requests.head(), requests.options()方式城市返回一个requests.models.Response工具,该工具封装了HTTP响应报文,该工具供给了下述常用方式和属性用于分析HTTP响应.
分析响应状态的属性和方式
url: 表现该HTTP请求的URL.
  1. payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
  2. r = requests.get('http://httpbin.org/get', params=payload)
  3. r.url   # 获得 http://httpbin.org/get?key1=value1&key2=value2&key2=value3
复制代码

  • tatus_code: 该HTTP响应的状态码.
  • reason: 响应状态码的说明.
分析响应内容的属性和方式:

  • encoding: 该HTTP响应的编码.
  • content: 该HTTP响应的内容.
  • text: 该HTTP响应的文本.按照r.encoding设备的编码格式对r.content举行解码获得.
  • .json(): 将json格式的响应内容分析为字典,若分析失利则抛出ValueError很是.
分析响应头的属性和方式:

  • headers: 以字典形式返回HTTP响应头,该字典的特别之处在于其不区分键的巨细写.
  1. r.headers['Content-Type']       # 获得 'application/json'
  2. r.headers.get('content-type')   # 获得 'application/json'
复制代码
报错

  • 碰到收集题目(如DNS 查询失利、拒绝毗连等)时,抛出一个ConnectionError很是.
  • 若HTTP请求返回了不乐成的状态码(4xx或5xx),挪用Response工具的raise_for_status() 会抛出一个HTTPError很是.
  • 若请求超时,则抛出一个Timeout很是.
  • 若请求横跨了设定的最大重定向次数,则会抛出一个TooManyRedirects很是.
上述全数很是都继续自requests.exceptions.RequestException .

免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 妈妈网-中国妈妈第一,是怀孕、育儿、健康等知识交流传播首选平台 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表