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 的简单使用的更多相关文章

  1. 爬虫——网页解析利器--re & xpath

    正则解析模块re re模块使用流程 方法一 r_list=re.findall('正则表达式',html,re.S) 方法二  创建正则编译对象 pattern = re.compile('正则表达式 ...

  2. 网页解析:Xpath 与 BeautifulSoup

    1. Xpath 1.1 Xpath 简介 1.2 Xpath 使用案例 2. BeautifulSoup 2.1 BeautifulSoup 简介 2.2 BeautifulSoup 使用案例 1) ...

  3. 关于爬虫中常见的两个网页解析工具的分析 —— lxml / xpath 与 bs4 / BeautifulSoup

    http://www.cnblogs.com/binye-typing/p/6656595.html 读者可能会奇怪我标题怎么理成这个鬼样子,主要是单单写 lxml 与 bs4 这两个 py 模块名可 ...

  4. python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)

    一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...

  5. 爬虫的三种解析方式(正则解析, xpath解析, bs4解析)

    一 : 正则解析 : 常用正则回顾: 单字符: . : 除换行符以外的所有字符 [] : [aoe] [a-w] 匹配集合中任意一个字符 \d : 数字 [0-9] \D : 非数字 \w : 非数字 ...

  6. 网页解析库-Xpath语法

    网页解析库 简介 除了正则表达式外,还有其他方便快捷的页面解析工具 如:lxml (xpath语法) bs4 pyquery等 Xpath 全称XML Path Language, 即XML路径语言, ...

  7. 【XPath Helper:chrome爬虫网页解析工具 Chrome插件】XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插件网

    [XPath Helper:chrome爬虫网页解析工具 Chrome插件]XPath Helper:chrome爬虫网页解析工具 Chrome插件下载_教程_安装 - 开发者插件 - Chrome插 ...

  8. Android Studio下的简单网页解析

    Android Studio下的简单网页解析 一.导入数据 导入前添加依赖 implementation 'org.jsoup:jsoup:1.11.3' 使用字符串导入 String html = ...

  9. Python网页解析

    续上篇文章,网页抓取到手之后就是解析网页了. 在Python中解析网页的库不少,我最开始使用的是BeautifulSoup,貌似这个也是Python中最知名的HTML解析库.它主要的特点就是容错性很好 ...

随机推荐

  1. JS For

    JS For 循环可以将代码块执行指定的次数. JavaScript 循环 document.write(cars[0] + "<br>"); document.wri ...

  2. 37-Data Volume 之 bind mount

    storage driver 和 data volume 是容器存放数据的两种方式,上一节我们学习了 storage driver,本节开始讨论 Data Volume. Data Volume 本质 ...

  3. python 错误信息是:sudo :apt-get:command not found

    1.问题描述 错误信息是:sudo :apt-get:command not found 2.问题原因及解决 在centos下用yum install xxx yum和apt-get的区别一般来说著名 ...

  4. 算法复杂度O(logn)详解

    一.O(logn)代码小证明 我们先来看下面一段代码: int cnt = 1; while (cnt < n) { cnt *= 2; //时间复杂度为O(1)的程序步骤序列 } 由于cnt每 ...

  5. RPM命令总结

    RPM软件管理程序 rpm命令是RPM软件包的管理工具.rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎.逐渐受到其他 ...

  6. linux kernel下输入输出console如何实现【转】

    转自:https://blog.csdn.net/skyflying2012/article/details/41078349 最近工作在调试usb虚拟串口,让其作为kernel启动的调试串口,以及u ...

  7. 5.jenkins 构建任务2--PHP项目

    推送代码 PHP 项目 然后我们要做的就是将 .jenkins下面 workspace下的代码. 推送到我们的项目机器上面 就ok了. 我们可以在php的jenkins的 项目配置中选择使用shell ...

  8. 【Excel】对比两列值

  9. Linux服务器下配置Java环境、JDK

    前言 可以解决问题有/etc/profile与~/.bashrc环境文件区别 文件权限问题,只读readonly Java环境搭建 一.下载JDK包 地址:jdk1.8提取码:gx0b 把文件放到Li ...

  10. 曾Python培训讲师-2年Python开发无包装简历-20191217-可公开

    目录 个人介绍 技能介绍 项目经历 自我评价 简历非完整版,需要完整版看下述信息,禁止任何一切私人用途.转发 我生日是27号,那就27元一份,有需求的来购买!只会涨价不会降价,大概卖10份涨1元:曾P ...