lxml库和BeautifulSoup库常用点小结
算是本人的学习笔记吧,仅供个人学习使用。
以下内容摘自《Python3网络爬虫开发实战--崔庆才著》
1.lxml库
XPath 常用规则:
| 表达式 | 描述 |
|---|---|
| nodename | 选取此节点的所有子节点 |
| / | 从当前节点选取直接子节点 |
| // | 从当前节点选取子孙节点 |
| . | 选取当前节点 |
| .. | 选取当前节点的父节点 |
| @ | 选取属性 |
具体阐述:
| 目的 | 示例 | 含义 |
|---|---|---|
| 所有节点 | //li | 以//开头,表示获取所有li节点 |
| 子节点选取 | //li | 获取所有li节点 |
| //li/a | 获取所有li节点的所有直接a子节点 | |
| //li//a | 获取li节点下的所有子孙a节点 | |
| //a[@href="link4.html"] | 获取href属性为link4.html的a节点 | |
| 父节点选取 | //a[@href="link4.html"]/.. | 获取href属性为link4.html的a节点的父节点 |
| 文本获取 | text() | 获取节点内部的文本 |
| //li[@class="item-0"]/text() | 选取class属性为item-0的li节点的直接子节点内部的文本 | |
| //li[@class="item-0"]//text() | 选取class属性为item-0的li节点的子孙节点内部的文本 | |
| 属性获取 | @ | 获取节点的属性 |
| //li/a/@href | 获取所有li节点的直接子节点a的href属性,返回内容可能为"link4.html" | |
| 属性多值匹配 | contains(classname,classvalue)方法 | 第一个参数传入属性名称,第二个参数传入属性值 |
| //li[contains(@class,"li")]/a/text() | 获取class属性值包含"li"的li节点的直接子节点a内部的文本 | |
| 多属性匹配 | and运算符 | 根据多个属性确定一个节点 |
| //li[contains(@class,"li") and @name="item"]/a/text() | 需要同时根据class和name属性的值来确定li节点 |
2.BeautifulSoup库的方法选择器
载入库
from bs4 import BeautifulSoup
soup=BeautifulSoup(html,"lxml") #进行BeautifulSoup对象的初始化
find_all(name,attrs,recursive,text,**kwargs):查询所有符合条件的元素;find()返回的是第一个匹配的元素
| 参数 | 作用 | 示例 |
|---|---|---|
| name | 根据节点名查询元素 | soup.fina_all(name="ul") #查询所有的ul节点 |
| attrs | 根据属性查询 | soup.find_all(attrs={'id':'list-1'})) #查询id属性值为list-1的节点 |
| text | 匹配节点的文本 | soup.find_all(text=re.compile('link')) #返回所有匹配正则表达式的节点的文本组成的列表 |
lxml库和BeautifulSoup库常用点小结的更多相关文章
- requests 库和beautifulsoup库
python 爬虫和解析 库的安装:pip install requests; pip install beautifulsoup4 requests 的几个常用方法: requests.reques ...
- python爬虫学习(一):BeautifulSoup库基础及一般元素提取方法
最近在看爬虫相关的东西,一方面是兴趣,另一方面也是借学习爬虫练习python的使用,推荐一个很好的入门教程:中国大学MOOC的<python网络爬虫与信息提取>,是由北京理工的副教授嵩天老 ...
- BeautifulSoup库整理
BeautifulSoup库 一.BeautifulSoup库的下载以及使用 1.下载 pip3 install beautifulsoup4 2.使用 improt bs4 二.BeautifulS ...
- Python:requests库、BeautifulSoup4库的基本使用(实现简单的网络爬虫)
Python:requests库.BeautifulSoup4库的基本使用(实现简单的网络爬虫) 一.requests库的基本使用 requests是python语言编写的简单易用的HTTP库,使用起 ...
- 【Python】在Pycharm中安装爬虫库requests , BeautifulSoup , lxml 的解决方法
BeautifulSoup在学习Python过程中可能需要用到一些爬虫库 例如:requests BeautifulSoup和lxml库 前面的两个库,用Pychram都可以通过 File--> ...
- Python爬虫小白入门(三)BeautifulSoup库
# 一.前言 *** 上一篇演示了如何使用requests模块向网站发送http请求,获取到网页的HTML数据.这篇来演示如何使用BeautifulSoup模块来从HTML文本中提取我们想要的数据. ...
- beautifulsoup库使用
介绍与安装 Beautiful Soup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据.BeautifulSoup 用来解析 HTML 比较简单, API非常人 ...
- BeautifulSoup库的使用
1.简介 BeautifulSoup库也是一个HTML/XML的解析器,其使用起来很简单,但是其实解析网站用xpath和re已经足矣,这个库其实很少用到.因为其占用内存资源还是比xpath更高. '' ...
- BeautifulSoup库
'''灵活又方便的网页解析库,处理高效,支持多种解析器.利用它不用编写正则表达式即可方便的实现网页信息的提取.''' BeautifulSoup库包含的一些解析库: 解析库 使用方法 优势 劣势 py ...
- python BeautifulSoup库的基本使用
Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree). 它提供简单又常用的导航(navigating),搜索以 ...
随机推荐
- 552. 学生出勤记录 II (Hard)
问题描述 552. 学生出勤记录 II (Hard) 可以用字符串表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 ...
- NSIS 自定义界面,下载并安装Net.Framework4.8
以 ScreenToGif 这款软件为例,详细讲解如何在安装的过程中检测并下载net包进行安装. 前言 1.ScreenToGif 是一款开源的截屏软件,依赖于Net.Framework环境 2.本文 ...
- N63050 第十四周运维作业
就业和全程班小伙伴本周学习内容: 第二十七天: http协议和web服务器 1http的cookie和session详解 2LAMP架构和CGI与FASTCGI区别 3常见PHP的配置和php程序 4 ...
- 七、25.创建user子分支并把代码推送到码云仓库中
打开终端点击+新建一个终端 注意 :如下操作都是在2:powershell下进行 先来检查一下当前所处分支 git branch 我们应该把这些代码都写到user分支上 接下来应该把这些代码统一迁移到 ...
- 前端框架大比拼:2022年的Vue与React谁更胜一筹?
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第 18 天,点击查看活动详情 前端框架经历了十多年的争奇斗艳百花齐放,经历了 JSP.jQuery.Ember.Angular.R ...
- Experience Cloud
通过Apex的方式上传 Topic: String communityId = [Select Id from Network where Name = 'MobileMNOCS'].Id; Inte ...
- vue中组件传值的几种方式
一.父组件给子组件传值方式(步骤) 1.VC1(子组件)定义props[a,b,c] 注意:props中的每个值都可以加各种修饰,如数据类型,是否可为空,默认值... 2.VC2(父组件)引用子组件 ...
- Linux系统Shell脚本第五章:shell数组、正则表达式及文件三剑客之AWK
目录 一.shell数组 1.数组分类 2.定义数组方法 二.正则表达式 1.元字符 2.表示次数 3.位置锚定 4.分组 5.扩展正则表达式 三.文本三剑客之AWK 1.awk 2.使用格式 3.处 ...
- vi 自增
(1). 建立第一个列表项.确保它以数字开始.(2). qa - 用寄存器 'a' 开始记录(3). Y - 抽出这个列表项(4). p - 把该项的一个副本放置在下一行上(5). CTRL-A - ...
- T137233 魔术增幅
设答案为$g$,那么肯定有$g\mid M$. 再设$M=\sum\limits_{i=1}^N a_i=g\times \sum\limits_{i=1}^N t_i$. 因为$t_i$都是正整数, ...