Beautiful Soup库 入门

Beautiful Soup库是解析、遍历、维护 HTML"标签树"的功能库。

Ubuntu环境下库的安装

sudo apt-get install python3-bs4

HTML 标签结构

HTML
<标签树>
BeautifulSoup类
<p>..</p>		#标签Tag,成对出现。
<p class='title'>...</p>
   ↑属性Attributes定义标签特点

Beautiful Soup 库

BeautifulSoup 类 对应一个HTML文档的全部内容。

简单使用
  1 import requests
  2 from bs4 import BeautifulSoup
  
  3 url = 'http://python123.io/ws/demo.html'
  4 r = requests.get(url)
  5 demo = r.text
  
  6 soup = BeautifulSoup(demo,'html.parser')
  7 print(soup.prettify)

返回结果:

<bound method Tag.prettify of <html><head><title>This is a python demo page</title></head>
<body>
<p class="title"><b>The demo python introduces several python courses.</b></p>
<p class="course">Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:
<a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a> and <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">Advanced Python</a>.</p>
</body></html>>
格式化显示

为HTML提供换行服务。

print(soup.prettify())

输出:

<html>
 <head>
  <title>
   This is a python demo page
  </title>
 </head>
 <body>
  <p class="title">
   <b>
    The demo python introduces several python courses.
   </b>
  </p>
  <p class="course">
   Python is a wonderful general-purpose programming language. You can learn Python from novice to professional by tracking the following courses:
   <a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">
    Basic Python
   </a>
   and
   <a class="py2" href="http://www.icourse163.org/course/BIT-1001870001" id="link2">
    Advanced Python
   </a>
   .
  </p>
 </body>
</html>

类的基本元素
在这里插入图片描述

标签树爬取

提取HTML页面信息的重要手段。

  • 三种爬取方向
    在这里插入图片描述
  • 代码
import requests
from bs4 import BeautifulSoup

#1.requests
url = 'http://python123.io/ws/demo.html'
r = requests.get(url)
demo = r.text

#2.bs4
soup = BeautifulSoup(demo,'html.parser')

#平行遍历:后续、前续
#for sibling in soup.a.next_siblings:
#for sibling in soup.a.previous_siblings:

#上行遍历
for parent in soup.a.parents:
	if parent is None:
		print(parent)
	else:
		print(parent.name)

返回结果:

p
body
html
[document]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值