Python Bs4 回顾
BeautifulSoup
bs4主要使用find()方法和find_all()方法来搜索文档。
find()用来搜索单一数据,find_all()用来搜索多个数据
find_all()与find()
name –> tag名
string –> 内容
recursive –>是否搜索所有子孙节点 默认为true 设为false只搜索子节点
两方法用法相似这里以find_all()为例。
#搜索tag名 <title></title>
soup.find_all("title") #关于属性
#搜索id为"link2"的标签
soup.find_all(id='link2') #这里属性的值可以使用字符串,正则表达式 ,列表,True
soup.find_all(id=re.compile("elsie")) #可以指定多个条件
soup.find_all(href=re.compile("elsie"), id='link1') #对于有些不能指定的标签(data-foo)
soup.find_all(attrs={"data-foo": "value"}) #对于class -->class为python保留字使用class_
soup.find_all(class_="top")
#属性结束 #关于string(内容)
#基础 内容为'Elsie'的
soup.find_all(string="Elsie") #内容在数组中的
soup.find_all(string=["Tillie", "Elsie", "Lacie"]) #内容匹配正则表达式的
soup.find_all(string=re.compile("Dormouse")) #匹配函数
soup.find_all(string=is_the_only_string_within_a_tag)
#内容结束 #搜索限制
#限制搜索数量为2
soup.find_all("a", limit=2) #只搜索直接子节点
soup.html.find_all("a", recursive=False)
#搜索限制结束
简写
soup.find_all("a")
#等价于
soup("a")
soup.title.find_all(string=True)
#等价于
soup.title(string=True)
CSS选择器
Beautiful Soup支持大部分的CSS选择器 #搜索tag为title
soup.select("title") #通过tag标签逐层查找
soup.select("html head title") #寻找直接子标签
soup.select("head > title")
soup.select("p > #link1") #选择所有紧接着id为link1元素之后的class为sister的元素
soup.select("#link1 + .sister") #选择p元素之后的每一个ul元素
soup.select("p + ul") #同时用多种CSS选择器查询元素
soup.select("#link1,#link2") #通过查询元素属性
soup.select('a[href="http://example.com/elsie"]')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>] soup.select('a[href^="http://example.com/"]')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
# <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
# <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>] soup.select('a[href$="tillie"]')
# [<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>] soup.select('a[href*=".com/el"]')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
#通过查询元素属性结束 #通过语言查找
soup.select('p[lang|=en]') #查找第一个元素
soup.select_one(".sister")
find_其他
find_parents() 和 find_parent()
搜索当前节点的父节点
#查找一个标签a
a = soup("a", id="link1") #查找a的父节点中的P标签
a_string.find_parent("p")
find_next_siblings() 和 find_next_sibling()
搜索当前节点后边解析的兄弟节点
(可以理解为搜索当前标签下边的同级节点)
find_previous_siblings() 和 find_previous_sibling()
搜索当前节点前边解析的兄弟节点
(可以理解为搜索当前标签上边的同级节点)
find_all_next() 和 find_next()
对当前节点之后的节点进行迭代
find_all_previous() 和 find_previous()
对当前节点之前的节点进行迭代
Python Bs4 回顾的更多相关文章
- python 基础回顾 一
Python 基础回顾 可变类型:list ,dict 不可变类型:string,tuple,numbers tuple是不可变的,但是它包含的list dict是可变的. set 集合内部是唯一的 ...
- Python -bs4介绍
https://cuiqingcai.com/1319.html Python -BS4详细介绍Python 在处理html方面有很多的优势,一般情况下是要先学习正则表达式的.在应用过程中有很多模块是 ...
- python bs4 + requests4 简单爬虫
参考链接: bs4和requests的使用:https://www.cnblogs.com/baojinjin/p/6819389.html 安装pip:https://blog.csdn.net/z ...
- 全面进攻python之前回顾下自己近三个月的自学之路
人生是在一直试错的过程中成长起来的.这句话貌似很有道理,但回顾了下自己近三个月python自学学习之路,又觉得自己对这句话又有了新的看法------行动之前必须要有正确的选择,这样做错了才能成长. 2 ...
- 零基础Python知识点回顾(一)
如果你是小白,建议只要安装官网的python-3.7.0-amd64.exe 然后在电脑cmd命令提示符 输入检查是否已经安装pip,一般安装了python都会有的. >pip ...
- python bs4 BeautifulSoup
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.bs4 模块的 BeautifulSoup 配合requests库可以写简单的爬虫. 安装 命令:pip in ...
- python bs4解析网页时 bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need to inst(转)
Python小白,学习时候用到bs4解析网站,报错 bs4.FeatureNotFound: Couldn't find a tree builder with the features you re ...
- python基础回顾1
定义 tuple(元组), list (表) #!/usr/bin/env python # encoding: utf-8 a = 10 #定义一直变量,无需声明 s1 = (2,1.3,'love ...
- Python知识回顾 —— 面向对象
博客转载自 http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/linhaifeng/articles/62040 ...
随机推荐
- Excel—文本函数
LEFT(从左开始取文本的函数)就是这个函数可以帮我们取文本,按照从左到右的顺序取 函数语法:=LEFT(要取的文本所在的单元格,从左到右取前几位)这表示的是字符,一个英文字母占一个字符,一个汉子也占 ...
- 10_30_unittest
1.断言 1).self.assertEqual(2,res)#期望值qian.结果值hou2)TextTestRunner 源码 必要的参数3)测试结果 上下文管理器 with open(" ...
- Imcash:一边大裁员,一边大扩招,你能否成为区块链人才中的7%?
农历春节后,互联网创业圈并不太平. 最早,滴滴被曝裁员,占比约为全员的15%,涉及员工约2000人.CEO程维在全员会议上称公司要做好过冬准备.此后,京东接棒,其裁员对象上升至副总裁级别高管,比例占到 ...
- Centos发布java的war包后,无法访问发布的工程
分析: 这时候,看你的开启的端口,8080,3306都能访问的话,那么就是你的地址写错了,可是,经测试,c3p0中的web地址是正确的,那么就去看linux中的tomcat的日志文件再tomcat/l ...
- leetcode刷题七<整数反转>
给出一个 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 : 输入: 输出: 示例 : 输入: - 输出: - 示例 : 输入: 输出: 假设我们的环境只能存储得下 32 位的有符号整 ...
- [sublime]用sublime搭建属于自己的Python的IDE
先在sublime中利用package control下载anaconda插件, 然后更改python的路径,不知道自己anaconda的python在哪,可以在prompt用命令where pyth ...
- photoshop改变图片大小,不改变像素
用画图修改了图片像素,360*440 但是图片30K,要求图片20K 打开photoshop,打开图片,点击文件--存储为web所用格式,调节品质大小到20K以下,保存即可
- 20190312_浅谈go&java差异(一)
多线程 java java中对于大量的比较耗时的任务多采用多线程对方式对任务进行处理,同时由于进程和线程 本身是通过宿主机OS进行管理的,当在cpu核数较少或线程分配不当 会导致多线程的效果不佳的事常 ...
- html2canvas在Vue项目踩坑-生成图片偏移不完整
背景 最近做一个Vue项目需求是用户长按保存图片,页面的数据是根据不同id动态生成的,页面渲染完生成内容图片让用户长按保存的时候,把整个页面都保存起来. 在项目遇到的坑是图片能生成,可是生成的图片总是 ...
- linux centos环境下,perl使用DBD::Oracle遇到报错Can't locate DBD/Oracle.pm in @INC 的解决办法
前言 接手前辈的项目,没有接触.安装.使用过perl和DBD::Oracle,也没有相关的文档记录,茫茫然不知所措~~.一开始发现这个问题,就想着迅速解决,就直接在google上搜报错信息,搜索的过程 ...