用Beautiful Soup解析html源码
- #xiaodeng
- #python3
- #用Beautiful Soup解析html源码
- html_doc = """
- <html>
- <head>
- <title>The Dormouse's story</title>
- </head>
- <body>
- <b>测试</b>
- <p class="title">
- <b>The Dormouse's story</b>
- </p>
- <p class="story">Once upon a time there were three little sisters; and their names were
- <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
- <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
- <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
- <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
- <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
- <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
- <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
- and they lived at the bottom of a well.
- </p>
- <p class="story">...</p>
- """
- from bs4 import BeautifulSoup
- soup = BeautifulSoup(html_doc,"html.parser")
- #1、补全html代码格式化输出
- #print(soup.prettify())
- #2、获取html页面标题
- #print(soup.title.string)
- """
- 还有其他类似用法:
- 1)print(soup.title.title) #result:title
- 2)print(soup.title.name) #result:title
- """
- #3、查找所有的p标签和p标签的内容,返回一个list
- #print(soup.find_all("p"))
- #print(soup.find_all("a"))
- #print(soup.find_all("title"))
- """
- 查找一条p标签记录,print(soup.p)
- """
- #4、查p标签下属性class的value值
- #print(soup.p["class"])
- #5、查找所有id="XXX"的标签及标签内容
- #print(soup.find_all(id="link3"))
- #6、从文档中找到所有<a>标签的链接
- """
- for key in soup.find_all("a"):
- print(key.get("href"))
- """
- #7、从文档中获取所有的文字内容
- #print(soup.get_text())
- #8、探索标签数据类型
- soup = BeautifulSoup('<b class="boldest">Extremely bold</b>',"html.parser")
- tag = soup.b
- #print(type(tag)) #<class 'bs4.element.Tag'>
- #9、获取标签名字,每个tag都有自己的名字,通过.name来获取
- #print(soup.b.name)
- #10、操作标签属性
- #一个tag可能有很多个属性.
- # tag <b class="boldest"> 有一个 “class” 的属性,值为 “boldest” . tag的属性的操作方法与字典相同
- #print(soup.b["class"])
- #11、执行删除标签属性等操作
- #del tag['class']
- #12、正则表达式
- #面例子中找出所有以b开头的标签,这表示<body>和<b>标签都应该被找到
- """
- import re
- soup = BeautifulSoup(html_doc,"html.parser")
- for tag in soup.find_all(re.compile("^b")):
- print(tag.name)
- """
- import re
- soup = BeautifulSoup(html_doc,"html.parser")
- #print(soup.find_all(href=re.compile("tillie"))) #href中包含tillie的超链接
- #13、列表形式的匹配(匹配a和p标签)
- soup = BeautifulSoup(html_doc,"html.parser")
- #print(soup.find_all(["a","p"]))
- #14、查找a标签下id="XXX"的标签及标签内容
- # find_all( name , attrs , recursive , text , **kwargs )
- # find_all() 方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件.这里有几个例子:
- #print(soup.find_all("a",id="link3"))
- #15、查找a标签下class_="sister"的内容
- #print(soup.find_all("a",class_="sister"))
- #16、通过text参数可以搜文档中的字符串内容.
- #与name参数的可选值一样, text参数接受字符串,正则表达式,列表,True
- #print(soup.find_all(text="Elsie"))
- #print(soup.find_all(text=["Tillie", "Elsie", "Lacie"]))
- #17、限定查找标签的数量
- #print(soup.find_all("a",limit=2))
- #18、想搜索tag的直接子节点,可以使用参数 recursive=False
- doc="""<html>
- <head>
- <title>The Dormouse's story</title>
- </head>
- </html>
- """
- soup = BeautifulSoup(doc,"html.parser")
- #print(soup.find_all("title",recursive=False))
- #19、查找父节点,兄弟节点等办法(待研究)
- #20、查找title标签
- soup = BeautifulSoup(html_doc,"html.parser")
- #print(soup.select("title"))
- #21、找到某个tag标签下的直接子标签
- #注意事项:p和b之前要空格,此写法"p>b"错误
- #print(soup.select("p > b"))#查找p标签下的直接子标签b
- #print(soup.select("body > b"))
- #22、通过CSS的类名查找class="sister"的标签
- result=soup.select(".sister")
- #print(result)
- #23、通过tag的id查找,soup.select("#link1")
- result=soup.select("#link1")
- #print(result)#[<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
用Beautiful Soup解析html源码的更多相关文章
- Python解析器源码加密系列之(二):一次使用标准c的FILE*访问内存块的尝试
摘要:由于近期打算修改Python解释器以实现pyc文件的加密/解密,出于保密的要求,解密之后的数据只能放在内存中,不能写入到文件中.但是后续的解析pyc文件的代码又只能接受FILE*作为入参,所以就 ...
- HtmlAgilityPack --解析Html源码
最近项目需要从网络上抓取一下数据解析Html源码,奈何正则表达式难写,于是网上搜索找到了“ HtmlAgilityPack”类库,敏捷开发,果然效率非同寻常. 在此做笔记,写下心得,顺便给自己总结一下 ...
- mvc5 解析route源码实现自己的route系统
Asp.net mvc5 解析route源码实现自己的route系统 url route 路由系统的责任是找到匹配的路由,创建路由数据,并将请求分配给一个处理程序. 选择动作是 MVC 的处理程序 ...
- 浩哥解析MyBatis源码(十)——Type类型模块之类型处理器
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6715063.html 1.回顾 之前的两篇分别解析了类型别名注册器和类型处理器注册器,此二 ...
- 解析 ViewTreeObserver 源码(下)
继上篇内容,本文介绍 ViewTreeObserver 的使用,以及体会其所涉及的观察者模式,期间会附带回顾一些基础知识.最后,我们简单聊一下 Android 的消息传递,附高清示意图,轻松捋清整个传 ...
- Python爬虫之Beautiful Soup解析库的使用(五)
Python爬虫之Beautiful Soup解析库的使用 Beautiful Soup-介绍 Python第三方库,用于从HTML或XML中提取数据官方:http://www.crummv.com/ ...
- Jsoup解析网页源码时常用的Element(s)类
Jsoup解析网页源码时常用的Element(s)类 一.简介 该类是Node的直接子类,同样实现了可克隆接口.类声明:public class Element extends Node 它表示由一个 ...
- 爬虫5_python2_使用 Beautiful Soup 解析数据
使用 Beautiful Soup 解析数据(感谢东哥) 有的小伙伴们对写正则表达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Beautiful Soup,有了它我们可以很方便地提取出HT ...
- 二十三、并发编程之深入解析Condition源码
二十三.并发编程之深入解析Condition源码 一.Condition简介 1.Object的wait和notify/notifyAll方法与Condition区别 任何一个java对象都继承于 ...
随机推荐
- [转]用 jQuery 实现页面滚动(Scroll)效果的完美方法
转自: http://zww.me/archives/25144 很多博主都写过/转载过用 jQuery 实现页面滚动(Scroll)效果的方法,但目前搜来的方法大都在 Opera 下有个小 Bug: ...
- 【ContestHunter】【弱省胡策】【Round8】
平衡树维护凸壳/三角函数+递推+线段树 官方题解:http://pan.baidu.com/s/1sjQbY8H 洛阳城里春光好 题目大意:(其实出题人已经写的很简短了……直接copy的-_-.sor ...
- [转载][HASS.IO] 【HASSOS安装】成功安装HASSOS 1.9(避开了大部分坑版)
7月20日HA官方放出HASSOS说明时,我开始入坑HASSOS,经历了安装没流量.打开主页:8123没显示.HASS.IO边栏不显示.安装不了HASS.IO插件等问题之后,在8月6日总算避开了大坑进 ...
- 关掉Windows Firewall的PowerShell
在Windows 8或Windows 2012 R2上, 使用下面的命令: Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled ...
- CSS-图片不变形设置
不管网页做的美还是丑,有一个问题始终是无法躲避的,就是有的时候会遇到图片变形的问题,之前遇到过这种问题解决过,不过还是整体的重新研究了一下图片,其中主要涉及到的知识点就是max-width和max-h ...
- CentOS7配置Mysql热备份
Mysql 的安装: 本人习惯讲安装包放在 /usr/local/src/ ①.[root@localhost ~]#cd /usr/local/src/ ②.[root@localhostsrc]# ...
- 揭破android中的闹钟app 二
· 这节,我们通过wheelview来模仿一个简易的正点闹钟. 我这里不说wheelview来龙去脉,只阐述几个简单的方法,如果,想看一看具体wheelview的内容,请看下面两篇文章: androi ...
- 利用shell脚本批量提交网站404死链给百度
网站运营人员对于死链这个概念一定不陌生,网站的一些数据删除或页面改版等都容易制造死链,影响用户体验不说,过多的死链还会影响到网站的整体权重或排名. 百度站长平台提供的死链提交工具,可将网站存在的死链( ...
- GLFW_KEY_KP_ADD和GLFW_KEY_KP_SUBTRACT
这两个键的代码分别为: GLFW_KEY_KP_ADD(334) GLFW_KEY_KP_SUBTRACT(333) 对应的是键盘右侧数字面板上的+ -键.
- Python操作MongoDB(PyMongo模块的使用)
#!/usr/bin/env python #coding:utf-8 # Author: --<qingfengkuyu> # Purpose: MongoDB的使用 # Creat ...