网页解析 -- bs4 和 xpath 的简单使用
bs4
BeautifulSoup 是一个可以从HTML或XML文件中提取数据的Python库,它的使用方式相对于正则来说更加的简单方便
中文文档:https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0
Tag
name:每一个tag对象都有name属性,为标签的名字
Attributes:在HTML中,tag可能有多个属性,所以tag属性的取值跟字典相同
get_text():通过get_text()方法可以获取某个tag下所有的文本内容

find_all()
通过name搜索,find_all('a')可以直接查找出整个文档树中所有的a标签,并返回列表
通过属性搜索,通过传递给attrs一个字典参数来搜索属性:soup.find_all(attrs={'class': 'sister'})
通过文本搜索,soup.find_all(text="Lacie")
通过正则表达式来筛选,将re.compile编译的对象传入find_all()方法,tags = soup.find_all(re.compile("^b"))

CSS选择器
使用select(),在其中传入字符串参数,就可以使用CSS选择器的语法来找到tag

xpath
相比于BeautifulSoup,Xpath在提取数据时会更有效率
from lxml import etree

表达式
nodename 选取当前节点的所有nodename子节点
/ 根路径
// 从整个文档当中搜索,不考虑位置
. 当前节点
.. 当前节点的父节点
@ 选取属性
路径表达式
//bookstore/book[1] 选取属于bookstore子元素的第一个 book元素
//bookstore/book[last()] 选取属于bookstore子元素的最后一个book元素
//bookstore/book[|ast()-1] 选取属于bookstore子元素的倒数第二个 book元素
//bookstore/book[position0)<3] 选取最前面的两个属于bookstore元素的子元素的book元素
//title[@lang] 选取所有拥有名为lang的属性的title 元素
//title[@lang='eng'] 选取所有title 元素,且这些元素拥有值为eng的lang属性
//bookstore/book[price>35.00] 选取bookstore元素的所有book元素,且其中的price元素的值须大于35.00
//bookstore/book[price> 35.00]/title 选取bookstore元素中的book元素的所有title元素,且其中的price元素的值须大于35.00
选取未知节点
* 匹配任何元素节点 //bookstore/* 选取bookstore元素的所有子元素
@* 匹配任何属性节点 //* 选取文档中的所有元素
node() 匹配任何类型的节点 //title[@*] 选取所有带有属性的title元素
选取多个路径
//book/title| //book/price 选取book元素的所有title和price元素
//title | //price 选取文档中所有的title和price元素
//bookstore/book/title| //price 选取bookstore元素的book元素的所有title元素,以及文档中所有的price元素
获取文本
用text()获取某个节点下的文本 //a/text()
用string()获取某个节点下所有的文本 string(//book[1])
其它
contains() 包含于 //div[contains(@id,'note')]
strats-with() 以什么开头
多个属性组合 //input(@id='ffff' and @name ='username')

将Element显示为字符

网页解析 -- bs4 和 xpath 的简单使用的更多相关文章
- 爬虫——网页解析利器--re & xpath
正则解析模块re re模块使用流程 方法一 r_list=re.findall('正则表达式',html,re.S) 方法二 创建正则编译对象 pattern = re.compile('正则表达式 ...
- 网页解析:Xpath 与 BeautifulSoup
1. Xpath 1.1 Xpath 简介 1.2 Xpath 使用案例 2. BeautifulSoup 2.1 BeautifulSoup 简介 2.2 BeautifulSoup 使用案例 1) ...
- 关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup
http://www.cnblogs.com/binye-typing/p/6656595.html 读者可能会奇怪我标题怎么理成这个鬼样子,主要是单单写 lxml 与 bs4 这两个 py 模块名可 ...
- python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)
一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...
- 爬虫的三种解析方式(正则解析, xpath解析, bs4解析)
一 : 正则解析 : 常用正则回顾: 单字符: . : 除换行符以外的所有字符 [] : [aoe] [a-w] 匹配集合中任意一个字符 \d : 数字 [0-9] \D : 非数字 \w : 非数字 ...
- 网页解析库-Xpath语法
网页解析库 简介 除了正则表达式外,还有其他方便快捷的页面解析工具 如:lxml (xpath语法) bs4 pyquery等 Xpath 全称XML Path Language, 即XML路径语言, ...
- 【XPath Helper:chrome爬虫网页解析工具 Chrome插件】XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插件网
[XPath Helper:chrome爬虫网页解析工具 Chrome插件]XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插 ...
- Android Studio下的简单网页解析
Android Studio下的简单网页解析 一.导入数据 导入前添加依赖 implementation 'org.jsoup:jsoup:1.11.3' 使用字符串导入 String html = ...
- Python网页解析
续上篇文章,网页抓取到手之后就是解析网页了. 在Python中解析网页的库不少,我最开始使用的是BeautifulSoup,貌似这个也是Python中最知名的HTML解析库.它主要的特点就是容错性很好 ...
随机推荐
- Python复习 一
Python回炉复习 1 变量 Python的变量和C语言的变量书写方式类似: 书写要求 python程序编写结构利用缩进表示,抛弃花括号: 结构 分支: if(条件语句1): 执行语句块 else ...
- 常用adb命令总结
前言 很早就想整理一下自己平时常用的一些adb命令,不仅为了便于以后查找,而且整理的过程自己又重新复习了一遍,但是当我开始在度娘一搜的时候,发现很多人已经写的非常详细了,尤其是当我发现了这篇adb概括 ...
- [Go] go连接influxdb的库
开启了influxdb后,会监听8086端口下载客户端代码git clone https://github.com/influxdata/influxdb1-client.git $GOPATH/sr ...
- 201871010123-吴丽丽《面向对象程序设计(Java)》第十三周学习总结
201871010123-吴丽丽<面向对象程序设计(Java)>第十三周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ ...
- JMeter基础知识系列一
1.Jmeter简介: Apache Jmeter可以用于对静态和动态的资源(文件.web动态语言-PHP.java.ASP.net.java对象.数据库和查询.FTP服务器等)的性能进行测试.最初用 ...
- bzoj3293 分金币
题目链接 problem 圆桌上坐着n个人,每人有一定数量的金币,金币总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使 得每个人的金币数目相等.你的任务是求出被转手的金币数量的最小值. so ...
- CF582E Boolean Function(DP,状态压缩,FMT)
简单题. 我第二道自己做出来的 2900 没毛病,我没切过 2800 的题 lqy:"CF 评分 2800 是中等难度" 我活个啥劲啊 为了方便(同时压缩状态个数),先建出表达式树 ...
- 美团技术分享:深度解密美团的分布式ID生成算法
本文来自美团技术团队“照东”的分享,原题<Leaf——美团点评分布式ID生成系统>,收录时有勘误.修订并重新排版,感谢原作者的分享. 1.引言 鉴于IM系统中聊天消息ID生成算法和生成策略 ...
- 曾Python培训讲师-2年Python开发无包装简历-20191217-可公开
目录 个人介绍 技能介绍 项目经历 自我评价 简历非完整版,需要完整版看下述信息,禁止任何一切私人用途.转发 我生日是27号,那就27元一份,有需求的来购买!只会涨价不会降价,大概卖10份涨1元:曾P ...
- pytorch_13-图像处理之skimage
之前程序使用的是PIL(Python image library),今天遇到了另一种图像处理包--skimage. skimage即scikit-image,PIL和Pillow只提供最基础的数字图像 ...