1. XPath
1.1 XPath简介
XPath,全称是XML Path Language
,即XML路径语言,是一门在XML文档中查找信息的语言,也同样适用于HTML文档的搜索。
1.2 XPath使用
安装lxml库
pip install lxml -i https://pypi.douban.com/simple
导入lxml.etree
from lxml import etree
etree.parse() 解析本地文件
html_tree = etree.parse(‘XX.html’)
etree.HTML() 解析服务器响应的文件
html_tree = etree.HTML(response.read().decode(‘utf-8’))
html_tree.xpath(‘xpath路径’)
1.2 XPath基本语法
- 路径查询
- //:从当前节点选取子孙节点,不考虑层级关系
- /:从当前节点选取直接子节点
- . :选取当前节点
- .. :选取当前节点的父节点
- 谓词查询(注意单引号和双引号的问题)
- //div[@id]
- //div[@id = “box”]
- 属性查询
- //@class
- 模糊查询
- //div[contains(@id,”he”)],表示id中包含关键字he的的div标签
- //div[starts-with(@id,“he”)],表示id开头是he的的div标签
- 内容查询
- //div/h1/text(),查看标签内容
- 逻辑运算
- //div[@id =”head” and @class = “s_down”]
- //div[@id =”head” or @class = “s_down”]
1.3 实践案例
获取百度网站的百度一下
1 | #-*-coding:utf-8-*- |
获取站长素材前十页的老虎图片
1 | # -*-coding:utf-8-*- |
2. Beautiful Soup
2.1 BeautifulSoup简介
BeautifulSoup简称:
- bs4
什么是BeatifulSoup?
- BeautifulSoup,和lxml一样,是一个html的解析器,主要功能也是解析和提取数据
优缺点?
- 缺点:效率没有lxml的效率高
- 优点:接口设计人性化,使用方便
2.2 安装以及创建
安装
- pip install bs4
导入
- from bs4 import BeautifulSoup
创建对象
服务器响应的文件生成对象
soup = BeautifulSoup(response.read().decode(), ‘lxml’)
本地文件生成对象
soup = BeautifulSoup(open(‘1.html’), ‘lxml’)
注意:默认打开文件的编码格式gbk所以需要指定打开编码格式
2.3 节点定位
- 方法选择器:
find_all()
,查询符合条件的所有元素的一个列表。name
:根据节点名来查询元素。例:find_all(name = 'ul')
attrs
:根据属性来查询元素。例:find_all(attrs = {'id':'h1'})
text
:根据传入的字符串或者正则表达式对象来匹配文本。例:find_all(text = re.compile('link'))
find()
,查询符合条件的所有元素,只返回第一个元素。
- CSS选择器
select(根据选择器的到节点对象)【推荐】
- 根据标签获取节点:
select(标签名)
- 根据class获取节点:
select(.class)
- 根据id获取节点:
select(#id)
- 根据属性获取节点:
select('li[class]')
- 层级选择器:
- 后代选择器:
element element
:div p - 子代选择器:
element>element
:div > p - 同级选择器:
element,element
:div , p
- 后代选择器:
- 根据标签获取节点:
- 节点信息
- 获取节点内容:
- obj.get_text()
- obj.string
- 节点属性:
- tag.name 获取标签名
- tag.name
- tag.attrs 将标签属性值作为一个字典返回
- tag.name 获取标签名
- 获取节点属性
- obj.attr.get(‘title’)
- 获取节点内容:
2.4 Demo
获取星巴克菜单中的的菜品名称
1 | from bs4 import BeautifulSoup |