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 就有),所以可以很方便地使用。
、