pyCharm中BeautifulSoup应用
BeautifulSoup 是第三方库的工具,它包含在一个名为bs4的文件包中,需要额外安装,安装方式
非常简单,进入python的安装目录,再进入scripts子目录,找到pip程序,
pip install bs4
就可以安装成功了
BeautifulSoup 装载html文档,
如果doc是一个html文档,通过:
from bs4 import BeautifulSoup soup =BeautifulSoup(doc,'lxml')
就可以创建一个名为soup的BeautifulSoup对象,其中doc是一个html的文档字符串
‘lxml’是一个参数,表示创建的是一个通过‘lxml’解析器解析的文档。
BeautifulSoup查找HTML元素
功能强大的find-all函数
find-all函数的原理如下:
find-all(self,name,attrs={},recursive=true,text=none,limit=none,**kwargs)
self表明它是一个类成员函数,
name是要查找的tag元素名称,默认是none,如果不具体说明,则查找所有元素。
attrs是元素的属性,它是一个字典,默认是空,如果明确指出,则查找有这个属性的元素。
find-all(self,name,attrs={},recursive=true,text=none,limit=none,**kwargs)
find函数使用方法与find_all类似,不同的是它只返回第一个满足要求的节点,并不是一个列表。
# 找到所有的a超链接 tags = soup.find_all("a")
# 找到class = “title” 的 p元素 tag = soup.find("p",attrs={''class":"title"})
# 找到所有含有属性sister的元素 tags = soup.find_all(name=None,attrs={"class":"sister"})
# 获取元素的属性值 tags = soup.find_all("a") for tag in tags: print(tag["href"])
# 找到所有元素的文本值,(不仅包含本节点文本,还包含该节点子树下面所有文本节点的组合值) tags=soup.find_all("a") for tag in tags: print(tag.text)
# 获取元素父节点 tag.parent
# 获取元素直接子节点 tag.children
# 获取元素节点的所有子孙元素节点 tag.desendants
# 获取元素节点的兄弟节点 # 获取下一个节点 tag.next_sibling # 获取前一个节点 tag.previous_sibling
# css语法
tag.select(css)
# 其中 tag 是HTML中的一个element节点对象,select是查找它的方法
# css是类似css语法的一个字符串,它的结构如下
[tagName][attName][=value]
tagName是元素名称,如果没有指定,就是所有元素
attName=value是属性名称,value是它对应的值,可以不指定属性,在指定了属性后也可以不指定值;
tag.select(css)返回一个列表,哪怕只有一个元素时也是一个列表;
#查找文档中所有p节点下的所有a节点 soup.select("a") #查找文档中所有class属性等于story的p节点下的所有a元素节点 soup.select("p[class='story'] a") #查找文档中所具有class属性的p节点下的所有a元素节点 soup.select("p[class] a") # 查找属性id=“link1”的a节点 soup.select("a[id='link1']") # 查找body下面head下面title节点 soup.select(""body head title) #查找body下面所有具有class属性的节点 soup.select("body [class]") # 查找body下面所有具有class属性的节点下面的a节点 soup.select("body [class] a")
在select(css)中 css 有多个节点时,节点元素之间用空格分开,就是查找子孙节点
# 查找div节点下面的所有直接子节点 soup.select("div > p")
#查找div后面所有同级别的兄弟节点(注意~前后至少有一个空格) tags = soup.select("div ~ p")
#查找div后面所有同级别的第一个兄弟节点(注意+前后至少有一个空格) tags = soup.select("div + p")
# 查找 href 是 “http://example.com/elsi” 的a节点 soup.select("a[href='http://example.com/elsie']") # 查找href以“sie” 结尾的 a 节点 soup.select("a[href$='sie']") # 查找 href 以 “http://example.com” 开始的a节点 soup.select("a[href^='http://example.com']") # 查找 href 中包含“example” 开始的a节点 soup.select("a[href*='example']")
pyCharm中BeautifulSoup应用的更多相关文章
- 【Python】在Pycharm中安装爬虫库requests , BeautifulSoup , lxml 的解决方法
BeautifulSoup在学习Python过程中可能需要用到一些爬虫库 例如:requests BeautifulSoup和lxml库 前面的两个库,用Pychram都可以通过 File--> ...
- pycharm中不能安装bs4的解决方案
首先:什么Beautiful Soup? Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.B ...
- 在Pycharm中使用GitHub
Pycharm是当前进行python开发,尤其是Django开发最好的IDE.GitHub是程序员的圣地,几乎人人都在用. 本文假设你对pycharm和github都有一定的了解,并且希望在pycha ...
- Pycharm中使用GitHub
Pycharm是当前进行python开发,尤其是Django开发最好的IDE.GitHub是程序员的圣地,几乎人人都在用. 本文假设你对pycharm和github都有一定的了解,并且希望在pycha ...
- Pycharm中的实用功能(网上看到的,感觉还不错)
实时比较 PyCharm 对一个文件里你做的改动保持实时的跟踪,通过在编辑器的左侧栏显示一个蓝色的标记.这一点非常方便,我之前一直是在Eclipse里面用命令“Compare against HEAD ...
- (原+转)pycharm中使用caffe
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5896446.html 参考网址: http://www.th7.cn/Program/Python/2 ...
- (原+转)pycharm中传入命令行参数
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5670821.html 参考网址: http://zhidao.baidu.com/question/5 ...
- pycharm中添加扩展工具pylint
今天调试了好几个小时,想吧pylint集成到pycharm中去,从网上找了个宝贝帖 子,但是不好用,原因是作者写的脚本是检查工程和模块的,而我的是单独检查一个文件,当然前者肯定会在项目后期用的.所以就 ...
- PyCharm中Directory与Python package的区别
对于Python而言,有一点是要认识明确的,python作为一个相对而言轻量级的,易用的脚本语言(当然其功能并不仅限于此,在此只是讨论该特点),随着程序的增长,可能想要把它分成几个文件,以便逻辑更加清 ...
随机推荐
- JS 作用域(执行环境)与作用链---JS 学习笔记(二)
一 作用域(执行环境) 作用域:定义了变量和函数有权访问的其他数据,决定了他们各自的行为.--------<JS高级程序设计>4.2 好难理解啊~参考了参考尤克希的博客内容,大体上理解了 ...
- 如何快速连接无线Wifi 使用二维码
无线Wifi现在已经很普及了,无论是在家.还是在单位.书店.餐馆.咖啡馆等公共场所,只要手机打开Wifi,选择相应的无线Wifi热点,手工输入密码后,即可通过无线Wifi访问互联网. 如何让用户更方便 ...
- js斐波那契数列
斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89...... 这个数列从第3项开始,每一项都等于前两项之和. 1.递归算法: function ...
- restful接口定义的几种方式
GET (SELECT): Retrieve a specific Resource from the Server, or a listing of Resources. #从服务器检 ...
- C#图像显示实现拖拽、锚点缩放功能【转】
1.图像拖拽 核心步骤: ①新建Point类型全局变量mouseDownPoint,记录拖拽过程中鼠标位置: ②MouseDown事件记录Cursor位置: ③MouseMove事件计算移动矢量,并更 ...
- 站在Web3.0 理解IPFS是什么
尽管网络上,已经有不少文章讨论IPFS,不过真正讲明白IPFS想做什么的很少,文本尝试站在未来Web3.0的高度来看看IPFS究竟用来解决什么问题. DApp 的缺陷 对区块链有所了解的同学,知道区块 ...
- WinDbg调试 C# dmp
WinDbg C#调试 打开windbg,加载需要调试的c# dmp. 设置好sympath等. 查看蹦会的c#主进程依赖的.Net环境 可以查看进程名对应的*.config文件. 开始加载符号,假设 ...
- div模拟文本框textarea
需求:利用highlight.js对文本框中的内容进行高亮显示 1.highlight.js使用 js中:<script src="js/highlight/highlight.pac ...
- java protected修饰符说明
1. 简介 对protected修饰符进行阐述,结合Object类的clone方法进行说明.其中clone方法如下:protected Object Object.clone(): 关于protect ...
- js 取整 取余
1.取整//保留整数部分parseInt(3/2) // 1 2.向上取整// 向上取整,有小数就整数部分加1Math.ceil(3/2) // 2 3.四舍五入// 四舍五入Math.round(3 ...