读BeautifulSoup官方文档之html树的搜索(2)

除了find()和find_all(), 这里还提供了许多类似的方法我就细讲了, 参数和用法都差不多, 最后四个是next, previous是以.next/previous_element()来说的...

Signature: find_parents(nameattrsstringlimit**kwargs)

Signature: find_parent(nameattrsstring**kwargs)

Signature: find_next_siblings(nameattrsstringlimit**kwargs)

Signature: find_next_sibling(nameattrsstring**kwargs)

Signature: find_previous_siblings(nameattrsstringlimit**kwargs)

Signature: find_previous_sibling(nameattrsstring**kwargs)

Signature: find_all_next(nameattrsstringlimit**kwargs)

Signature: find_next(nameattrsstring**kwargs)

Signature: find_all_previous(nameattrsstringlimit**kwargs)

Signature: find_previous(nameattrsstring**kwargs)

BeautifulSoup也提供CSS选择器, 用法大致与css选择器相同, 我css也只是入门级别, 这里就不多解释了... :

 1 soup.select("title")
 2 # [<title>The Dormouse‘s story</title>]
 3
 4 soup.select("p nth-of-type(3)")
 5 # [<p class="story">...</p>]
 6
 7 soup.select("body a")
 8 # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
 9 #  <a class="sister" href="http://example.com/lacie"  id="link2">Lacie</a>,
10 #  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
11
12 soup.select("html head title")
13 # [<title>The Dormouse‘s story</title>]
14
15 soup.select("head > title")
16 # [<title>The Dormouse‘s story</title>]
17
18 soup.select("p > a")
19 # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
20 #  <a class="sister" href="http://example.com/lacie"  id="link2">Lacie</a>,
21 #  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
22
23 soup.select("p > a:nth-of-type(2)")
24 # [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]
25
26 soup.select("p > #link1")
27 # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
28
29 soup.select("body > a")
30 # []
31
32 #上面好像看懂了, 应该是 > 的话就是必须是孩子, 空格的话表示子孙.
33
34 soup.select("#link1 ~ .sister")
35 # [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
36 #  <a class="sister" href="http://example.com/tillie"  id="link3">Tillie</a>]
37
38 soup.select("#link1 + .sister")
39 # [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]
40
41 soup.select(".sister")
42 # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
43 #  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
44 #  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
45
46 soup.select("#link1")
47 # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
48
49 soup.select("a#link2")
50 # [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]
51
52 #下面好像是通过id寻找 :
53 soup.select("#link1")
54 # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
55
56 soup.select("a#link2")
57 # [<a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>]
58
59 #匹配任意一个
60 soup.select(“#link1,#link2”)
61 # [<a class=”sister” href=”http://example.com/elsie” id=”link1”>Elsie</a>,
62 # <a class=”sister” href=”http://example.com/lacie” id=”link2”>Lacie</a>]
63
64 #当然可以用属性的值来匹配
65 soup.select(‘a[href="http://example.com/elsie"]‘)
66 # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
67
68 soup.select(‘a[href^="http://example.com/"]‘)
69 # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
70 #  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
71 #  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
72
73 soup.select(‘a[href$="tillie"]‘)
74 # [<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]
75
76 soup.select(‘a[href*=".com/el"]‘)
77 # [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
78
79 #这个真看不懂
80 multilingual_markup = """
81  <p lang="en">Hello</p>
82  <p lang="en-us">Howdy, y‘all</p>
83  <p lang="en-gb">Pip-pip, old fruit</p>
84  <p lang="fr">Bonjour mes amis</p>
85 """
86 multilingual_soup = BeautifulSoup(multilingual_markup)
87 multilingual_soup.select(‘p[lang|=en]‘)
88 # [<p lang="en">Hello</p>,
89 #  <p lang="en-us">Howdy, y‘all</p>,
90 #  <p lang="en-gb">Pip-pip, old fruit</p>]
91
92 #选一个可以用select_one()
93 soup.select_one(".sister")
94 # <a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
时间: 2024-08-05 06:56:59

读BeautifulSoup官方文档之html树的搜索(2)的相关文章

读BeautifulSoup官方文档之html树的搜索(1)

之前介绍了有关的四个对象以及他们的属性, 但是一般情况下要在杂乱的html中提取我们所需的tag(tag中包含的信息)是比较复杂的, 现在我们可以来看看到底有些什么搜索的方法. 最主要的两个方法当然是find_all()和find(), 两者大致思路相同, 只不过一个前者返回符合条件的所有tags, 后者只返回一个tag. 我们先仔细看看find_all. Signature: find_all(name, attrs, recursive, string, limit, **kwargs) f

读BeautifulSoup官方文档之html树的修改

修改html树无非是对其中标签的改动, 改动标签的名字(也就是类型), 属性和标签里的内容... 先讲这边提供了很方便的方法来对其进行改动... 1 soup = BeautifulSoup('<b class="boldest">Extremely bold</b>') 2 tag = soup.b 3 4 tag.name = "blockquote" 5 tag['class'] = 'verybold' 6 tag['id'] = 1

读BeautifulSoup官方文档之html树的打印

prettify()能返回一个格式良好的html的Unicode字符串 : markup = '<a href="http://example.com/">I linked to <i>example.com</i></a>' soup = BeautifulSoup(markup) soup.prettify() # '<html>\n <head>\n </head>\n <body>\

读vue-cli3 官方文档的一些学习记录

原来一直以为[email protected] 就是创建模板的工具,读了官方文档才知道原来这么有用,不少配置让我长见识了 Prefetch 懒加载配置 懒加载相信大家都是知道的,使用Import() 语法就可以在需要的时候加载了,但是读了官方文档Prefetch一节后,发现事情并没有想象的那么简单. 文档写的很清楚,Prefetch是在空闲的时候就加载一些不着急的文件,并且import默认是加上了Prefetch的,也就是说你使用了import可能并不是你想要的结果(比如用户点击某个按钮才触发加

Beautifulsoup官方文档

Beautiful Soup 中文文档 原文 by Leonard Richardson ([email protected]) 翻译 by Richie Yan ([email protected]) ###如果有些翻译的不准确或者难以理解,直接看例子吧.### 英文原文点这里 Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree). 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作

第0001题 : 产生随机数(顺便读random模块官方文档)

看这个之前我准备先看一下random模块的官方文档... 在整个随机模块中,  最基础的就是random, 它产生一个 [0.0, 1.0)的浮点数. 这个模块下所有的函数实际上是绑定在一个叫做random.Ramdom的类的隐藏实例下的, 当然你可以自己实例化这个类从而得到新的随机数生成器, 同时random模块下还有一个叫做SystemRandom的类, 它使用系统函数 os.urandom()用操作系统提供的随机资源来来产生随机数.(不知所云...) 只挑了一部分看起来有用的函数... r

Mysql优化(出自官方文档) - 第八篇(索引优化系列)

目录 Mysql优化(出自官方文档) - 第八篇(索引优化系列) Optimization and Indexes 1 Foreign Key Optimization 2 Column Indexes 3 Column Indexes && Multiple-Column Indexes 4 Comparison of B-Tree and Hash Indexes 5 Use of Index Extensions 6 Invisible Indexes 7 Descending In

由浅入深Zookeeper详解(参考官方文档)

[老哥我最近接到个任务研究一下Zookeeper,对于我这个Linux运维领域的小菜鸟来说也是刚刚听到这个名字,为了养成良好的文档整理和学习能力,我人生第一次开通了博客并把这次的研究经历记录了下来,以后我会不定期的记录下来我对技术领域的探索,希望热爱Linux运维志同道合的兄弟们多指教,一同进步成长.(ps:我本人平时比较沉默,善于观察思考,对历史人物颇有见解,但是一旦说起话来就会滔滔不绝,谁让我曾经的梦想是当一名教师呢!哈哈!)同时,送给大家一句话,人生是一场马拉松比赛,只有坚持到最后的人,才

【苦读官方文档】2.Android应用程序基本原理概述

官方文档原文地址 应用程序原理 Android应用程序是通过Java编程语言来写.Android软件开发工具把你的代码和其它数据.资源文件一起编译.打包成一个APK文件,这个文档以.apk为后缀,保存了一个Android应用程序全部的内容.Android设备通过它来安装相应的应用. 一旦安装到设备上.每一个Android应用程序就执行在各自独立的安全沙盒中: Android系统是一个多用户的Linux系统.每一个应用都是一个用户. Android系统默认会给每一个应用分配一个唯一的用户ID(这个