# 库
request:自动爬取 HTML 页面,自动网络请求提交
robots.txt: 网络爬虫排除标准
beautiful soup:解析 HTML 页面
Re: 正则表达式(用于提取需要的信息)
# request 方法
requests.request (): 构造一个请求支撑以下各方法的基础方法
requests.get (): 获取 HTML 网页的主要方法对应 HTTP 的 get
requests.head (): 获取 HTML 网页头部的信息方法对应 HTTP 的 head
requests.post (): 向 HTML 网页提交 post 请求方法,对应 HTTP 的 post
requests.put (): 向 HTML 提交 put 请求方法,对应 HTTP 的 put
# 对象属性
r.status_code: HTTP 请求返回状态,200 表示成功,404 表示失败
r.txt: HTTP 响应内容的字符串方式,即 url 对应的页面内容
re.encoding: 从 HTTP header 中猜测的响应内容编码形式
r.apparent_encoding: 从内容分析出的响应编码方式(备用编码)
r.content HTTP 响应内容的二进制形式
# handler 处理器的基本使用
- 获取 hanlder 的方法
opener = urllib.request.HttoHandler () - 获取 opener 对象
opener = urllib.requst.build_opener (handler) - 调用 open 方法
response = opener.open (request)
content = response.read().decode('utf-8')
(可以使用代理)
# 解析页面
常用的三个方法
- Xpath // 获取网页源码的部分数据
- JsonPath //
- BeautifulSoup
1.Xapth
表达式 | 描述 |
---|---|
nodename | 选取此节点所有节点 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选取当前属性 |
选取未知节点
XPath 通配符可用来选取位置的 XML 元素。
通配符 | 描述 |
---|---|
* | 匹配任何元素节点 |
@* | 匹配任何属性节点 |
node() | 匹配任何类型的节点 |