chzhiyi / -KnowledgeShare

6 stars 1 forks source link

20190401 - Beautiful Soup 库的使用 - baijing #45

Open KeepInLove1006 opened 5 years ago

KeepInLove1006 commented 5 years ago

eautiful Soup库的使用

Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。

Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。

一、安装 Beautiful Soup

dos窗口命令安装

pip和pip3的区别:

1、使用pip install :新安装的库会放在这个目录下面 python2.7/site-packages

2、使用pip3 install:新安装的库会放在这个目录下面:python3.6/site-packages

pip install beautifulsoup4
pip3 install beautifulsoup4

二、Beautiful Soup的使用

1、首先我们需要先导入BS4库

from bs4 import BeautifulSoup

2、定义html内容

html = """
<html><head><title>百度一下</title></head>
<body>
<p class="title"><b>baidu</b></p>

<p class="story">aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccccccc
<a href="http://z.baidu.com" id="link1">Z站</a>,
<a href="http://www.baidu.com" id="link2">百度官网</a> </p>

<p class="story">...</p>
"""

3、创建 beautifulsoup 对象

soup = BeautifulSoup(html)
# 若html内容存在文件a.html中,那么可以这么创建BeautifulSoup对象
soup = BeautifulSoup(open(a.html))

4、格式化输出

print(soup.prettify())

结果:

5、Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构

每个节点都是Python对象,所有对象可以归纳为4种:

1)Tags

Tags是 HTML 中的一个个标签

#获取tags
print(soup.title)
print(soup.head)
print(soup.a)
print(soup.p)

结果:

<title>百度一下</title>
<head><title>百度一下</title></head>
<a href="http://z.baidu.com" id="link1">Z站</a>
<p class="title"><b>baidu</b></p>

对于Tags,还有2个属性,name跟attrs

print(soup.a.name)
print(soup.a.attrs)

结果:

a
{'href': 'http://z.baidu.com', 'id': 'link1'}

从上面的输出结果我们可以看到标签<a>的attrs属性输出结果是一个字典,我们要想获取字典中的具体的值可以这样

p = soup.a.attrs
print(p['class'])

因写的html里没相应的字典类型,所有无结果

2)NavigableString

#获取标签内部的文字(NavigableString)
print(soup.a.string)

结果:Z站

3)BeautifulSoup

soup本身也是有这两个属性的,只是比较特殊而已

#查看BeautifulSoup的属性
print(soup.name)
print(soup.attrs)

结果:

[document]
{}

4)Comment

提取被注释的内容

#获取标签内部的文字
print(soup.a.string)
print(type(soup.a.string))

因写的html里没相应的注释,所有无结果