接续昨天的影片,今天的内容为介绍「更精准地」搜寻HTML元素的方法~
想在大海捞针就变得简单许多了(等等...好像没这麽夸张
以下为影片中有使用到的程序码
<!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>
#使用HTML标签属性搜寻
#请将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_1 = objsoup.find(id = "title")
print("物件类型 :", type(objtag_1))
print("列印标签 :", objtag_1)
print("列印标签内容:", objtag_1.text)
print("="*40)
objtag_2 = objsoup.find(id = "content2")
print("物件类型 :", type(objtag_2))
print("列印标签 :", objtag_2)
print("列印标签内容:", objtag_2.text)
#使用CSS搜寻
#请将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_1 = objsoup.find(class_= "section1")
print("物件类型 :", type(objtag_1))
print("列印标签 :", objtag_1)
print("列印标签内容:", objtag_1.text)
print("="*100)
objtag_2 = objsoup.find_all(class_ = "section1")
print("物件类型 :", type(objtag_2))
print("列印标签 :", objtag_2)
print("列印标签内容:")
for data in objtag_2:
print(data.text)
#select()
#请将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_1 = objsoup.select('h1') #寻找所有h1标签的元素
print("所有h1标签的元素:\n", objtag_1)
print(type(objtag_1[0]))
print("="*100)
objtag_2 = objsoup.select('.section1') #寻找所有CSS class属性为section1的元素
print("所有CSS class属性为section1的元素:\n", objtag_2)
print("="*100)
objtag_3 = objsoup.select('#title') #寻找所有CSS id属性为title的元素
print("所有CSS id属性为title的元素:\n", objtag_3)
print("="*100)
objtag_4 = objsoup.select('h1#title') #寻找所有<h1>且id属性为title的元素
print("寻找所有<h1>且id属性为title的元素:\n", objtag_4)
print("="*100)
#select()
#请将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_5 = objsoup.select('section.section1') #寻找所有<section>且class属性为section1的元素
print("所有<section>且class属性为section1的元素:\n", objtag_5)
print("="*100)
objtag_6 = objsoup.select('p span') #寻找所有在<p>元素内的<span>元素
print("所有在<p>元素内的<span>元素:\n", objtag_6)
print("="*100)
objtag_7 = objsoup.select('p > span') #寻找所有在<p>元素内的<span>元素,中间无其他元素
print("所有在<p>元素内的<span>元素,中间无其他元素:\n", objtag_7)
print("="*100)
objtag_8 = objsoup.select('img[height]') #寻找所有在<img>标签且有height属性的元素
print("寻找所有在<img>标签且有height属性的元素:\n", objtag_8)
#取得图片网址
#请将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')
img = objsoup.find('img')
print("图片网址:", img['src'])
print("图片网址:", img.get('src'))
如果在影片中有说得不太清楚或错误的地方,欢迎留言告诉我,谢谢您的指教。
>>: [Day 21 - React] 今晚我想来点,React的其他功能
函数也是个物件型别,可以封装一些功能(程序码),在需要使用的时候执行功能(程序码)。 例如我们需要...
今天来分享我在 AIS 的所见所闻! 进入正题 前些天的文章中已经向各位分享 AIS 的报名方式 (...
学习任何东西,都要把基础学的扎实,基础稳了,遇到问题就能迎刃而解。 而学习程序语言的基础就是数学逻...
前言 比较合并排序法与插入排序法,一旦输入n的规模足够大时,合并排序在最坏情况所需的时间Θ,而插入排...
【前言】 本系列为个人前端学习之路的学习笔记,在过往的学习过程中累积了很多笔记,如今想藉着IT邦帮忙...