BeautifulSoup 是第三方库的工具,它包含在一个名为bs4的文件包中,需要额外安装,安装方式

非常简单,进入python的安装目录,再进入scripts子目录,找到pip程序,

  1. pip install bs4

就可以安装成功了

BeautifulSoup 装载html文档,

如果doc是一个html文档,通过:

  1. from bs4 import BeautifulSoup
  2. soup =BeautifulSoup(doc,'lxml')

就可以创建一个名为soup的BeautifulSoup对象,其中doc是一个html的文档字符串

‘lxml’是一个参数,表示创建的是一个通过‘lxml’解析器解析的文档。

BeautifulSoup查找HTML元素

功能强大的find-all函数

find-all函数的原理如下:

  1. find-all(self,name,attrs={},recursive=true,text=none,limit=none,**kwargs)

self表明它是一个类成员函数,

name是要查找的tag元素名称,默认是none,如果不具体说明,则查找所有元素。

attrs是元素的属性,它是一个字典,默认是空,如果明确指出,则查找有这个属性的元素。

  1. find-all(self,name,attrs={},recursive=true,text=none,limit=none,**kwargs)

find函数使用方法与find_all类似,不同的是它只返回第一个满足要求的节点,并不是一个列表。

  1. # 找到所有的a超链接
  2. tags = soup.find_all("a")
  1. # 找到class = “title” 的 p元素
  2. tag = soup.find("p",attrs={''class":"title"})
  1. # 找到所有含有属性sister的元素
  2. tags = soup.find_all(name=None,attrs={"class":"sister"})
  1. # 获取元素的属性值
  2. tags = soup.find_all("a")
  3. for tag in tags:
  4. print(tag["href"])
  1. # 找到所有元素的文本值,(不仅包含本节点文本,还包含该节点子树下面所有文本节点的组合值)
  2. tags=soup.find_all("a")
  3. for tag in tags:
  4. print(tag.text)
  1. # 获取元素父节点
  2. tag.parent
  1. # 获取元素直接子节点
  2. tag.children
  1. # 获取元素节点的所有子孙元素节点
  2. tag.desendants
  1. # 获取元素节点的兄弟节点
  2. # 获取下一个节点
  3. tag.next_sibling
  4. # 获取前一个节点
  5. tag.previous_sibling

# css语法
tag.select(css)
# 其中 tag 是HTML中的一个element节点对象,select是查找它的方法
# css是类似css语法的一个字符串,它的结构如下
[tagName][attName][=value]

tagName是元素名称,如果没有指定,就是所有元素

attName=value是属性名称,value是它对应的值,可以不指定属性,在指定了属性后也可以不指定值;

tag.select(css)返回一个列表,哪怕只有一个元素时也是一个列表;

  1. #查找文档中所有p节点下的所有a节点
  2. soup.select("a")
  3.  
  4. #查找文档中所有class属性等于story的p节点下的所有a元素节点
  5. soup.select("p[class='story'] a")
  6.  
  7. #查找文档中所具有class属性的p节点下的所有a元素节点
  8. soup.select("p[class] a")
  9.  
  10. # 查找属性id=“link1”的a节点
  11. soup.select("a[id='link1']")
  12.  
  13. # 查找body下面head下面title节点
  14. soup.select(""body head title)
  15.  
  16. #查找body下面所有具有class属性的节点
  17. soup.select("body [class]")
  18.  
  19. # 查找body下面所有具有class属性的节点下面的a节点
  20. soup.select("body [class] a")

在select(css)中 css 有多个节点时,节点元素之间用空格分开,就是查找子孙节点

  1. # 查找div节点下面的所有直接子节点
  2. soup.select("div > p")
  1. #查找div后面所有同级别的兄弟节点(注意~前后至少有一个空格)
  2. tags = soup.select("div ~ p")
  1. #查找div后面所有同级别的第一个兄弟节点(注意+前后至少有一个空格)
  2. tags = soup.select("div + p")
  1. # 查找 href 是 “http://example.com/elsi” 的a节点
  2. soup.select("a[href='http://example.com/elsie']")
  3.  
  4. # 查找href以“sie” 结尾的 a 节点
  5. soup.select("a[href$='sie']")
  6.  
  7. # 查找 href 以 “http://example.com” 开始的a节点
  8. soup.select("a[href^='http://example.com']")
  9.  
  10. # 查找 href 中包含“example” 开始的a节点
  11. soup.select("a[href*='example']")

pyCharm中BeautifulSoup应用的更多相关文章

  1. 【Python】在Pycharm中安装爬虫库requests , BeautifulSoup , lxml 的解决方法

    BeautifulSoup在学习Python过程中可能需要用到一些爬虫库 例如:requests BeautifulSoup和lxml库 前面的两个库,用Pychram都可以通过 File--> ...

  2. pycharm中不能安装bs4的解决方案

    首先:什么Beautiful Soup? Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.B ...

  3. 在Pycharm中使用GitHub

    Pycharm是当前进行python开发,尤其是Django开发最好的IDE.GitHub是程序员的圣地,几乎人人都在用. 本文假设你对pycharm和github都有一定的了解,并且希望在pycha ...

  4. Pycharm中使用GitHub

    Pycharm是当前进行python开发,尤其是Django开发最好的IDE.GitHub是程序员的圣地,几乎人人都在用. 本文假设你对pycharm和github都有一定的了解,并且希望在pycha ...

  5. Pycharm中的实用功能(网上看到的,感觉还不错)

    实时比较 PyCharm 对一个文件里你做的改动保持实时的跟踪,通过在编辑器的左侧栏显示一个蓝色的标记.这一点非常方便,我之前一直是在Eclipse里面用命令“Compare against HEAD ...

  6. (原+转)pycharm中使用caffe

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5896446.html 参考网址: http://www.th7.cn/Program/Python/2 ...

  7. (原+转)pycharm中传入命令行参数

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5670821.html 参考网址: http://zhidao.baidu.com/question/5 ...

  8. pycharm中添加扩展工具pylint

    今天调试了好几个小时,想吧pylint集成到pycharm中去,从网上找了个宝贝帖 子,但是不好用,原因是作者写的脚本是检查工程和模块的,而我的是单独检查一个文件,当然前者肯定会在项目后期用的.所以就 ...

  9. PyCharm中Directory与Python package的区别

    对于Python而言,有一点是要认识明确的,python作为一个相对而言轻量级的,易用的脚本语言(当然其功能并不仅限于此,在此只是讨论该特点),随着程序的增长,可能想要把它分成几个文件,以便逻辑更加清 ...

随机推荐

  1. Jenkins部署的时候报错

    拿了一个最简单的,好不容易maven开始跑了 最终给我报错了 [INFO] -------------------------------------------------------------- ...

  2. CSS之不常用但重要的样式总结

    1,设置颜色渐变 background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.67), rgba(255, 255, 255, 0));( ...

  3. laravel框架的注入

    如果项目太大,最好采用注入的方式 首先在 根目录/app/ 下创建个service文件夹来 在控制器层可以调用 调用方法

  4. python学习(十一)

  5. Android测试(二)——adb常用命令

    连接设备: 安装应用包apk文件: adb install apk文件 卸载应用: adb uninstall 包名 将设备中的文件放到本地: adb pull 设备文件目录 本地文件目录 将本地文件 ...

  6. python 数据分析基础

    安装Python基础的几个数据分析库: pip install pandas pip install numpy pip install scipy pip install scikit-surpri ...

  7. 百度EasyDL文本分类自定义API示例代码 python

    因为需要将命名实体中的组织机构名进一步区分为政府.企业.社会组织等,在easydl上做了一个文本分类模型,但是要用这个接口时候发现, 官方文档中竟然还在用urllib2的库,且不完整.好多地方会报错, ...

  8. 强力推荐!那些你不能错过的 GitHub 插件和工具

    以代码托管平台起家的 GitHub 网站,已然成为全球程序员工作和生活中不可或缺的一份子.从优秀的企业,到优秀的程序员,都将自己最优秀的代码作品存放在这片开源净土里,供彼此学习交流.\\LS--201 ...

  9. springcloud-zuul路由网关

    路由网关(zuul) 在微服务架构中,需要多个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能 路由.配置管理等,由这个基础组件相互协作,共同组建了一个简单的微服务系统.一个简 ...

  10. 博客编辑器Open Live Writer的安装以及配置

    下载安装包 访问官网  http://openlivewriter.org/ 或者微软商店  https://www.microsoft.com/en-us/p/open-live-writer/9n ...