python之BeautifulSoup库

╰半夏微凉° 2022-05-27 09:44 433阅读 0赞

python之BeautifulSoup库

简介:

BeautifulSoup库通过定位 HTML 标签来格式化和组织复杂的网络信息,用简单易用的Python对象为我们展现 XML 结构信息
安装:
博主是python3.6 版本通过命令:pip install beautifulsoup4进行安装

这里写图片描述

简单范例:

问题一

1:代码

  1. # coding=utf-8
  2. """ @author: jiajiknag 程序功能:获取网页指定的内容信息 """
  3. """ BeautifulSoup: 它通过定位 HTML 标签来 格式化和组织复杂的网络信息, 用简单易用的Python对象为我们展现 XML 结构信息 """
  4. # 导入Python的request模块(在 urllib 库里面),只导入一个 urlopen 函数。
  5. from urllib.request import urlopen
  6. # 从bs4中导入函数BeautifulSoup
  7. from bs4 import BeautifulSoup
  8. # urlopen 用来打开并读取一个从网络获取的远程对象
  9. html = urlopen("http://www.pythonscraping.com/pages/page1.html")
  10. # 调用html.read()获取网页的HTML内容
  11. bs0bj = BeautifulSoup(html.read())
  12. print(bs0bj.h1)
  13. """ 下面的所有函数调用都可以产生同样的结果: bsObj.html.body.h1 bsObj.body.h1 bsObj.html.h1 """

2:结果

这里写图片描述

注:
对于代码中的urllib模块的了解可以简了解:
urllib和urllib2的区别


针对上面的代码进行的改进

1:改进代码

  1. # coding=utf-8
  2. """ @author: jiajiknag 程序功能:获取标题 """
  3. """ BeautifulSoup: 它通过定位 HTML 标签来 格式化和组织复杂的网络信息, 用简单易用的Python对象为我们展现 XML 结构信息 """
  4. # 导入Python的request模块(在 urllib 库里面),只导入一个 urlopen 函数。
  5. from urllib.request import urlopen
  6. from urllib.error import HTTPError
  7. # 从bs4中导入函数BeautifulSoup
  8. from bs4 import BeautifulSoup
  9. def getTitel(url):
  10. """创建getTitle函数,返回网页的标题"""
  11. try:
  12. # urlopen 用来打开并读取一个从网络获取的远程对象
  13. html = urlopen(url)
  14. # 返回一个HTTP错误
  15. except HTTPError as e:
  16. return None
  17. try:
  18. # 调用html.read()获取网页的HTML内容
  19. bs0bj = BeautifulSoup(html.read())
  20. title = bs0bj.body.h1
  21. # AttributeError 错误
  22. except ArithmeticError as e:
  23. return None
  24. # 创建实例
  25. titel = getTitel("https://blog.csdn.net/jiajikang_jjk?t=1")
  26. if titel == None:
  27. print("标题未找到")
  28. else:
  29. print(titel)

2:结果
这里写图片描述


问题二

BeautifulSoup爬去网站的特定文字

1:代码

  1. # coding=utf-8
  2. """ @author: jiajiknag 程序功能: 一创建个网络爬虫 抓取:http://www.pythonscraping.com/pages/warandpeace.html 这个网页。 """
  3. # 导包
  4. from urllib.request import urlopen
  5. from bs4 import BeautifulSoup
  6. # urlopen 用来打开并读取一个从网络获取的远程对象
  7. html = urlopen("http://www.pythonscraping.com/pages/warandpeace.html")
  8. # 创建BeautifulSoup对象
  9. bs0bj = BeautifulSoup(html)
  10. # bsObj.findAll(tagName, tagAttributes) 可以获取页面中所有指定的标签
  11. namelist = bs0bj.findAll("span", {
  12. "green"})
  13. for name in namelist:
  14. print(name.get_text())

2:结果

这里写图片描述


问题三

BeautifulSoup并非是python中解析HTML的唯一选择

• lxml 这个库(http://lxml.de/)可以用来解析 HTML 和 XML 文档,以非常底层的实现而闻名 于世,大部分源代码是用 C 语言写的。虽然学习它需要花一些时间(其实学习曲线越 陡峭,表明你可以越快地学会它),但它在处理绝大多数 HTML 文档时速度都非常快。
• HTML parser 这是 Python 自带的解析库:(解析库)。因为它不用安装(只要装了 Python 就有),所以可以很方便地使用。

发表评论

表情:
评论列表 (有 0 条评论,433人围观)

还没有评论,来说两句吧...

相关阅读