Day 19 BeautifulSoup模组一

接下来的几天,要跟大家介绍一个超级重要的模组—BeautifulSoup
利用它,能轻松地找到HTML原始档案中我们想要寻找的元素内容~
一起来看看吧!/images/emoticon/emoticon07.gif

要执行这个外部模组前,必须至CMD进行安装

pip install beautifulsoup4
pip install lxml

以下为影片中有使用到的程序码

<!doctype html>
<!-- 请将此档案储存成bs4_HTML.html -->
<html lang="zh-tw">
<head>
    <meta charset="utf-8">
	<title>水母</title>
	<style>
        section.section1 {background-color:#AAFFEE;} /*薄荷绿*/
	    h1#title {background-color:#CCCCFF;} /*淡紫色*/
	    h1#content1 {color:#227700;} /*深绿色*/
	    h1#content2 {color:#7700BB;} /*深紫色*/
		span {color:red;}
	</style>
</head>
<body>
<h1 id="title">水母的天敌</h1>
<img src="DSC_0394.jpg" alt="於海生馆拍摄的水母" height="300" width="450">

<section class="section1">
<h1 id="content1">海龟</h1>
<p>捕食水母为生,海龟除了<span>眼睛</span>外,身体其他部分都可以抵抗水母的毒性,牠们在捕食水母时会闭上眼睛。</p>
<a href="https://zh.wikipedia.org/wiki/%E6%B5%B7%E9%BE%9F">维基百科海龟连结</a>
</section>

<section class="section1">
<h1 id="content2">紫螺</h1>
<p>分布在热带太平洋温暖的水域,爱吃漂浮在水面的水母。</p>
<a href="https://zh.wikipedia.org/wiki/%E7%B4%AB%E8%9E%BA">维基百科紫螺连结</a>
</section>

</body>
</html>
#查看资料型态
import requests, bs4 

url = "https://new.ntpu.edu.tw/"
htmlfile = requests.get(url)

soup = bs4.BeautifulSoup(htmlfile.text, 'lxml') 
print(type(soup))
#先在新手村修练一下!
#请将C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改为bs4_HTML.html在您电脑中的路径
import bs4

fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")

objsoup = bs4.BeautifulSoup(htmlfile, 'lxml') 
print(type(objsoup))
#寻找title标签
#请将C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改为bs4_HTML.html在您电脑中的路径
import bs4

fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')

print("物件类型     :", type(objsoup.title))
print("title标签    :", objsoup.title) 
print("title标签内容:", objsoup.title.text)
#find()
#请将C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改为bs4_HTML.html在您电脑中的路径
import bs4

fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')

objtag = objsoup.find('h1')
print("物件类型    :", type(objtag))
print("列印标签    :", objtag)
print("列印标签内容:", objtag.text)
#find_all()
#请将C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改为bs4_HTML.html在您电脑中的路径
import bs4

fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')

objtag = objsoup.find_all('h1')
print("物件类型    :", type(objtag))
print("列印标签    :", objtag)
#印出find_all()回传的串列内容
#请将C:\\Users\\ASUS\\Desktop\\bs4_HTML\\修改为bs4_HTML.html在您电脑中的路径
import bs4

fn = "C:\\Users\\ASUS\\Desktop\\bs4_HTML\\bs4_HTML.html"
htmlfile = open(fn, encoding = "utf-8")
objsoup = bs4.BeautifulSoup(htmlfile, 'lxml')

objtag = objsoup.find_all('h1')
print("物件类型    :", type(objtag))
print("列印标签    :", objtag)

print()

print(type(objtag[0]))


print("方法一:")
for data in objtag:
    print(data.text)
    
print("方法二:")   
for data in objtag:
    print(data.getText())
    
    
print("方法三:")   
for data in objtag:
    print(str(data))
    
print("方法四:")  
 
for i in range(len(objtag)):
    print(objtag[i])
    print(type(objtag[i]))

如果在影片中有说得不太清楚或错误的地方,欢迎留言告诉我,谢谢您的指教。


<<:  Day 19 魁儡的 double object

>>:  # TypeScript 能手养成之旅 Day 15 介面(Interface)

Day5 网页制作环境建设

在开始写网页前,我们要先把所需的工具准备好,就像锁螺丝需要用螺丝起子一样,写网页我们要准备好我们的编...

c++ 打包执行档

linux中:使用cmake,把编译生成全部放入out文件夹,然後这个就是没有源码的linux执行包...

完全理解React的completeWork以及错误边界

点击进入React源码调试仓库。 概述 每个fiber节点在更新时都会经历两个阶段:beginWor...

图的走访 - DFS 篇

5 图的走访 - DFS 篇 今天要跟大家分享另一种在图上面遍历所有节点的深度优先搜索 (Depth...

Ruby on Rails 局部渲染(Partial Render)

局部渲染是⼀种在 Rails 专案很常⾒的程序码整理⼿法之⼀。在前⼀个章节整理表单 的时候,有⽤到了...