美文网首页
2018-08-08

2018-08-08

作者: 咖喱魚旦餐蛋面 | 来源:发表于2018-08-08 22:06 被阅读0次

BeautifulSoup学习笔记----过滤器

文档地址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html#

1、from bs4 import BeautifulSoup

soup=BeautifulSoup(html_doc)  获取的其实是按编码规则编码的HTML代码

2、

find_all( name , attrs , recursive , text , **kwargs )

find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件.这里有几个例子:

soup.find_all("title")# [The Dormouse's story]soup.find_all("p","title")

# [The Dormouse's story]

soup.find_all("a")

# [Elsie,#  Lacie,#  Tillie]

soup.find_all(id="link2")

# [Lacie]

importresoup.find(text=re.compile("sisters"))

# u'Once upon a time there were three little sisters; and their names were\n'

有些tag属性在搜索不能使用,比如HTML5中的 data-* 属性:

data_soup=BeautifulSoup('foo!')data_soup.find_all(data-foo="value")

# SyntaxError: keyword can't be an expression

但是可以通过 find_all() 方法的 attrs 参数定义一个字典参数来搜索包含特殊属性的tag:

data_soup.find_all(attrs={"data-foo":"value"})

# [foo!]

按CSS搜索

按照CSS类名搜索tag的功能非常实用,但标识CSS类名的关键字 class 在Python中是保留字,使用 class 做参数会导致语法错误.从Beautiful Soup的4.1.1版本开始,可以通过 class_ 参数搜索有指定CSS类名的tag:

找到a标签的属性为href的所有值

soup = BeautifulSoup(r.text)

for link in soup.findAll("a"):

 if  'href' in link.attrs:

  print(link.attrs['href']

limit 参数

find_all() 方法返回全部的搜索结构,如果文档树很大那么搜索会很慢.如果我们不需要全部结果,可以使用 limit 参数限制返回结果的数量.效果与SQL中的limit关键字类似,当搜索到的结果数量达到 limit 的限制时,就停止搜索返回结果.

文档树中有3个tag符合搜索条件,但结果只返回了2个,因为我们限制了返回数量:

recursive 参数

调用tag的 find_all() 方法时,Beautiful Soup会检索当前tag的所有子孙节点,如果只想搜索tag的直接子节点,可以使用参数 recursive=False .

一段简单的文档:

像调用 find_all() 一样调用tag

find_all() 几乎是Beautiful Soup中最常用的搜索方法,所以我们定义了它的简写方法. BeautifulSoup 对象和 tag 对象可以被当作一个方法来使用,这个方法的执行结果与调用这个对象的 find_all() 方法相同,下面两行代码是等价的:

find()

find( name , attrs , recursive , text , **kwargs )

find_all() 方法将返回文档中符合条件的所有tag,尽管有时候我们只想得到一个结果.比如文档中只有一个标签,那么使用 find_all() 方法来查找标签就不太合适, 使用 find_all 方法并设置 limit=1 参数不如直接使用 find() 方法.下面两行代码是等价的:


ERROR:

总是出错,之前都可以find().text这样用,不知道为什么这次不可以

AttributeError: 'NoneType' object has no attribute 'text'

sosososososo confused!

要在多个一样CSS名字的标签中去寻

终于都可以了

人有几猪,屎过先知


相关文章

  • 【随笔】2018-08-08据说,今天适合分手

    今日,2018-08-08; 据说,今天适合分手; 可是, 还没有恋爱; 怎么分手?

  • 感恩日记

    感恩日记 双小宝 2018-08-08 00:03 · 字数 870 · 阅读 0 · 日记本 2018.8.7 ...

  • 夏天

    竹山不爱吃山竹 2018-08-08 19:57 · 字数 2112 · 阅读 0 · 日记本 每年的夏天爸...

  • Android自动化测试

    记录 2018-08-08 该东西只是记录,方便你我他 UiDevice 此类介绍: 打开某个APP 工具介绍 u...

  • PRESS.one,你会用了吗

    [PRESSone拓荒者] 2018-08-08 以下为原作者正文。 PRESS.one的大名很多人都知道,...

  • 手把手教你使用PRESS.one

    [PRESSone拓荒者] 2018-08-08 编者按:不到半年时间,Press.one已经两次重大升级,...

  • 艺像标画画

    周三晚上6:45 周日晚上5:30 2018-08-08晚上6:45。画了一个小雨伞。 西瓜,树叶。

  • 《致良知——责善》

    时间:2018-08-08 君子理应规劝别人向善,这就是“责善”。责善的重点在于“忠告而善道之”,尽心劝诫...

  • 2018-08-08

    2018-08-08 事件:今天听群里分享,觉察自己有份自责。 感受:内疚,自责。 想法:我应该勇敢的去做,去担当...

  • sftp远程与本地文件传输

    writed at 2018-08-08 1.名词解释 ①SSH:是一个安全外壳协议, SSH理解:传统的网络服务...

网友评论

      本文标题:2018-08-08

      本文链接:https://www.haomeiwen.com/subject/vgkxbftx.html