python之BeautifulSoup库

python之BeautifulSoup库

简介:

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

这里写图片描述

简单范例:

问题一

1:代码

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

"""
下面的所有函数调用都可以产生同样的结果:
bsObj.html.body.h1
bsObj.body.h1 
bsObj.html.h1

"""

2:结果

这里写图片描述

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


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

1:改进代码

# coding=utf-8
"""
@author: jiajiknag
程序功能:获取标题
"""
"""
BeautifulSoup:
它通过定位 HTML 标签来 格式化和组织复杂的网络信息,
用简单易用的Python对象为我们展现 XML 结构信息
"""
# 导入Python的request模块(在 urllib 库里面),只导入一个 urlopen 函数。
from urllib.request import urlopen
from urllib.error import HTTPError
# 从bs4中导入函数BeautifulSoup
from bs4 import BeautifulSoup

def getTitel(url):
    """创建getTitle函数,返回网页的标题"""
    try:
        # urlopen 用来打开并读取一个从网络获取的远程对象
        html = urlopen(url)
        # 返回一个HTTP错误
    except HTTPError as e:
        return None
    try:
        # 调用html.read()获取网页的HTML内容
        bs0bj = BeautifulSoup(html.read())
        title = bs0bj.body.h1
        # AttributeError 错误
    except ArithmeticError as e:
        return None


# 创建实例
titel = getTitel("https://blog.csdn.net/jiajikang_jjk?t=1")
if titel == None:
    print("标题未找到")
else:
    print(titel)

2:结果
这里写图片描述


问题二

BeautifulSoup爬去网站的特定文字

1:代码

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

2:结果

这里写图片描述


问题三

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

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

猜你喜欢

转载自blog.csdn.net/jiajikang_jjk/article/details/79962183
今日推荐