BeautifulSoup
介紹BeautifulSoup
常用物件html
網頁Request
的HTML
網頁XPATH
CSS Selector
Regular Expression
HTML
抓出資料真正的位置BeautifulSoup
介紹¶#安裝
pip install bs4
conda install bs4
#引用
from bs4 import BeautifulSoup
Variable = BeautifulSoup(html_string_variable, parser)
- parser
- lxml #官方推薦使用
- html5lib
- html.parser
## 範例
from bs4 import BeautifulSoup
html_string = "<h1>BeautifulSoup Example</h1><br/><p>paragraphm</p>"
bts = BeautifulSoup(html_string, 'lxml')
print(bts)
<html><body><h1>BeautifulSoup Example</h1><br/><p>paragraphm</p></body></html>
HTTP Request
爬取YAHOO
網頁新聞,並使用BeaustifulSoup
輸出顯示內容YAHOO
網頁新聞,並使用BeaustifulSoup
輸出顯示內容prettify 函數
¶html
檔案## 範例
from bs4 import BeautifulSoup
html_string = "<h1>BeautifulSoup Example</h1><br/><p>paragraphm</p>"
bts = BeautifulSoup(html_string, 'lxml')
print(bts)
print("- - - - - - - -")
print(bts.prettify())
<html><body><h1>BeautifulSoup Example</h1><br/><p>paragraphm</p></body></html> - - - - - - - - <html> <body> <h1> BeautifulSoup Example </h1> <br/> <p> paragraphm </p> </body> </html>
YAHOO
網頁新聞,並使用BeaustifulSoup
將格式化的內容存成html
檔BeautifulSoup常用物件
¶tag
物件NavigableString
物件Comment
物件tag
物件¶html
中特定標籤## 範例
from bs4 import BeautifulSoup
html_string = "<h1 id='title1' class='name example'>BeautifulSoup Example</h1><br/><p>paragraphm</p>"
bts = BeautifulSoup(html_string, 'lxml')
tag = bts.h1
print(tag)
print(type(tag))
print(tag.name) #標籤名稱
print(tag.attrs) #屬性字典
print(tag['id']) #id名稱
print(tag['class']) #class名稱
print(tag.string) #標籤內容
<h1 class="name example" id="title1">BeautifulSoup Example</h1> <class 'bs4.element.Tag'> h1 {'id': 'title1', 'class': ['name', 'example']} title1 ['name', 'example'] BeautifulSoup Example
## 範例(承上題p改為h1) - 請猜以下執行結果
from bs4 import BeautifulSoup
html_string = "<h1 id='title1' class='name example'>BeautifulSoup Example</h1><br/><h1>paragraphm</h1>"
bts = BeautifulSoup(html_string, 'lxml')
tag = bts.h1
print(tag)
print(type(tag))
print(tag.name) #標籤名稱
print(tag.attrs) #屬性字典
print(tag['id']) #id名稱
print(tag['class']) #class名稱
tag
物件NavigableString
物件¶## 範例
from bs4 import BeautifulSoup
html_string = "<h1 id='title1' class='name example'>BeautifulSoup Example</h1><br/><p>paragraphm</p>"
bts = BeautifulSoup(html_string, 'lxml')
tag = bts.h1
print(type(tag.string))
print(tag.string)
<class 'bs4.element.NavigableString'> BeautifulSoup Example
HTTP Request
爬取YAHOO
新聞,試著將該新聞的title
名字取出text
: 抓取所有子標籤的合併內容 get_text()
: 抓取所有子標籤的合併內容, 該方法可帶入參數至於各標籤之間## 範例
from bs4 import BeautifulSoup
html_string = "<div><h1>BeautifulSoup Example.</h1><p>This is tag example</p></div>"
bts = BeautifulSoup(html_string, 'lxml')
tag = bts.div
print(tag)
print(tag.string)
print(tag.text)
print(tag.get_text('----'))
<div><h1>BeautifulSoup Example.</h1><p>This is tag example</p></div> None BeautifulSoup Example.This is tag example BeautifulSoup Example.----This is tag example
html
標籤如下<body><div><p><span>BeautifulSoup</span>Pracitce</p><span>data</span></div><h1>test</h1></body>
BeautifulSopu Practice
data
Comment
物件¶html
註解部分## 範例
from bs4 import BeautifulSoup
html_string = "<body><h1><!--Comment Example Start--></h1><!--End--></body>"
bts = BeautifulSoup(html_string, 'lxml')
print(bts.h1.string)
print(type(bts.h1.string))
Comment Example Start <class 'bs4.element.Comment'>
html
網頁¶html
網頁即為搜尋標籤樹,透過搜尋標籤獲取所需資料html
網頁函數¶find()
find_all()
find()
函數使用¶find(name, attribute, recursive, text)
參數說明:
name : 標籤名稱
attribute : 標籤屬性
recursive : 是否包含子標籤搜尋,預設為True
text : 指定搜尋標籤字串
## 範例
import requests
from bs4 import BeautifulSoup
response = requests.get('https://udn.com/news/story/7240/7837612') #3.範例1.html
#print(response.text)
bts = BeautifulSoup(response.text, 'lxml')
tag_p = bts.find(name="p") #抓取p標籤
tag_a = tag_p.find(name="a") #抓取p標籤下的a標籤
print(tag_a.string)
tag_class = bts.find(attrs={"class":"article-content__title"})
print(tag_class.string)
台積電 台積電先進封裝大加碼 將砸5,000億在嘉科蓋六座廠
Tag
物件,多了搜尋各屬性功能## 範例
from bs4 import BeautifulSoup
html_string = """
<div>
<ul>
<li><a class="link" href='http://www.google.com.tw'>Google</a></li>
<li><a class="link" href='http://www.yahoo.com.tw'>Yahoo</a></li>
</ul>
</div>
"""
print("html結構:", html_string)
bts = BeautifulSoup(html_string, 'lxml')
print("使用tag物件抓取a標籤內容:", bts.a.string, sep='')
print("使用find屬性抓取a標籤內容:", bts.find(class_='link').string)
html結構: <div> <ul> <li><a class="link" href='http://www.google.com.tw'>Google</a></li> <li><a class="link" href='http://www.yahoo.com.tw'>Yahoo</a></li> </ul> </div> 使用tag物件抓取a標籤內容:Google 使用find屬性抓取a標籤內容: Google
find_all()
函數使用¶find(name, attribute, recursive, text, limit)
參數說明:
name : 標籤名稱
attribute : 標籤屬性
recursive : 是否包含子標籤搜尋,預設為True
text : 指定搜尋標籤字串
limit : 符合html標籤的最大值
## 範例
import requests
from bs4 import BeautifulSoup
response = requests.get('https://udn.com/news/index')
bts = BeautifulSoup(response.text, 'lxml')
tag_a = bts.find_all('a')
#print(tag_a)
for i in tag_a:
if(i.string == None):
print(i.get_text())
else:
print(i.string)
聯合報 經濟日報 陽光行動 有設計 有行旅 願景 我的新聞 會員中心 我的設定 訂閱管理 登出 即時 要聞 娛樂 運動 全球 社會 地方 產經 股市 房市 生活 寵物 健康 橘世代 文教 評論 兩岸 科技 Oops 閱讀 旅遊 雜誌 報時光 倡議+ 500輯 轉角國際 NBA 時尚 汽車 棒球 HBL 遊戲 專題 網誌 女子漾 購物 聯合新聞網 陽光行動 聯合報數位版 聯合70 轉角國際 倡議家 世界日報 新聞話題 會員中心 U利點數 我的新聞 歷史新聞 活動專區 udn粉絲團 udn line 好友 經濟日報網 房地產 基金 中經社 樂透 發票 噓!星聞 優人物 udnSTYLE 500輯 遊戲角落 發燒車訊 元氣網 橘世代 寵物部落 科技玩家 女子漾 報時光 udn NBA 野球夢田 HBL 琅琅悅讀 琅琅書店 讀創故事 一刻鯨選 聯副70 udn部落格 聯合文學 聯經出版 聯文雜誌 數位文創 IP 授權 瘋活動 售票網 時光商號 聯合知識庫 聯合電子報 聯合影音網 聯合學苑 有行旅 APP行動網 刊登廣告 FAQ 客服 新聞授權 服務條款 著作權 隱私權聲明 聯合報系 訂報紙 關於我們 網站總覽 加入橘世代VIP富活人生下半場。 自行車專用道「沒頭沒尾」...竟成偷拍違規熱點 機車族哀號:交通陷阱 21:37 男大生幫籌95萬元返鄉基金 睽違10多年能回老家...校警激動跪地 21:08 寵物 女子漾 遊戲角落 {{item.title}} {{subItem.title}} 聯合報 經濟日報 橘世代 寵物 科技玩家 女子漾 白沙屯媽祖18日起駕!路線、日程、禁忌總整理 太陽花10年 誰的遊戲誰的夢? 中信金融管理學院G13國際學習 以美國名校規格 培育國際智慧金融家 2024總統大選藍綠版圖變化 看哪個縣市變天了?哪裡又鐵板一塊? 蘇丹紅風暴!最新下架名單、業者因應措施一次看 即時 熱門 22:01 大型成長股反彈提振 美股那指開高 21:55 烏克蘭:俄軍22架無人機來襲 烏軍擊落17架 21:51 ETF買盤發功…投信狂買創新高 金管會:龐大資金將陸續進場 21:39 中職/投80球只有39顆好球 魏碩成撐完5局幫助兄弟屠猿 21:33 瑞銀估日本央行19日升息 有望結束負利率政策 21:30 700萬粉絲網紅曬稅單繳稅近億 網友:這麼好賺? 21:27 英皇室因凱特陷入公關大危機 梅根心中暗笑? 21:23 全台首創!城市工務管理導入AI決策 高雄智慧城市展搶先體驗 21:22 卡達休戰談判 以色列將提議停火6週、交換40名人質 44671 台積電先進封裝大加碼 將砸5,000億在嘉科蓋六座廠 43176 00940募多少? 答案揭曉超過1700億 38874 本周「血型+生肖」財運TOP5!A型1生肖「運勢特別旺盛」:能大賺一筆 27153 台積電先進封裝廠落腳嘉科園區 與南科、竹科鏈成半導體重要基地 24859 00940定價10元沒比較便宜但有這好處!專家提「四誤解」:申購先買先贏這邏輯只對一半 23933 00929股價破了21元…這檔就像私藏的提款機! 她:當初一堆人說不會過20 23388 竹科再爆裁員潮?他曝「科技業2大慘況」 內行人有感:真的凍 23216 史上第二次「三媽會」!白沙屯媽祖鑾轎「駐駕」大甲鎮瀾宮 上次是18年前 22957 冷眼集/給國會巨嬰的震撼教育 白沙屯媽祖 太陽花學運 惠利道歉 投信買超132億 一周天氣 股市行情 發票 樂透 °c °c 空氣品質 aqi ETF買盤發功…投信狂買創新高 金管會:龐大資金將陸續進場 抖音網紅擁700萬粉絲 網一看稅單傻了:這麼好賺? 英皇室因凱特陷入公關大危機 梅根心中暗笑? 二十年河西 南韓平均薪資超車日本 兩樣情!小一新生少千人憂減班 國中新生卻增3千擔心教室不夠 參選區黨部主委資格卻不符 藍議員爆料稱黨籍被黑箱搬運 製造業無薪假降溫? 一電子零組件、一印刷廠合計再通報600人 鴻海股價甩尾創13年半來高點 再寫5大驚奇 MLB/情人眼裡出好球 大谷3支0飛球出局仍有真美子甜笑鼓掌 玩交友軟體「一票弟弟狂約泡溫泉」 34歲女崩潰:適婚男性在哪裡? 嗆韓不懂?洪申翰:唱名3次不在場可跳過不適用總質詢 影/真衰!高雄騎士車燈閃爍警攔查關切 下秒被右轉車撞飛 票房大賣身價飆高!好萊塢新天王除了「甜茶」還有他 柯文哲農地改善限期已到 竹市:收到恢復農用資料 詐團「金管會職員」秀假工作證指示匯款 金管會:請勿上當 尾牙爽中汽車!她「2原因」喊超苦惱 網羨:根本穩賺不賠 慶102歲生日!唐爺爺洗腎長達20年 名醫分享護腎7大撇步 非裔校警離鄉背井10多年 美男大生幫募資非洲旅費 斷鏈自行車專用道成偷拍違規熱點 機車族哀號:交通陷阱 高雄機車騎上綠園道影響行人安全惹怨 警方:加強取締 《淚之女王》是真實故事改編?三星女繼承人為愛和「保鑣結婚」 17年後「付上百億贍養費」離婚收場 時尚 入門之戰?MG傳將以MG2加入親民電動車戰場! 車訊 擁抱千瘡百孔的祖國:為何俄羅斯暴力相待,卻是伊蓮娜「我深愛的國家」? 轉角國際 她看直播花上萬元買了超萌金漸層 到家短短5天就猝死!飼主:被「星期貓」騙了 寵物部落 獨/李國毅旦角粉墨登場幕後 吐緊箍咒「完了要死了」 噓!星聞 {{item.cateTitle}} {{item.title}} {{item.desc}} 投票看結果 韓國消費越買越省?!「TWQR」台韓跨國購物服務開通優惠到四月底 遠東Café打造夢饗地中海 暢享舌尖上的異國風情 泰山攜手馬祖酒廠首推白沙屯媽祖紀念酒 限量「粉紅超跑」設計 網喊「快搶購!」 萬金杜鵑雙北合作,大安森林公園美麗綻放 陽獅集團「為愛獻聲」推廣器捐聲紋卡 星傳媒體攜手極達創新 以科技傳遞溫暖心聲 連線直擊日韓新潮流 跟著Mia C’bon漫遊拉麵館及狂歡動漫商品 安全英國豬肉 加強推廣台灣市場 華航擴大北美航網 7/14直飛西雅圖 5個建議教你好好慢老,掌握自己的健康步調 FitFlop全新品牌形象 為獨步全球的人體工學中底科技帶來全新感受 真衰!高雄騎士車燈閃爍警攔查關切 下秒被右轉車撞飛 影/金門班機取消、小三通也停駛 旅客機場等不到候補 紐約皇后廣場地鐵站發生襲擊事件 白人男子慘遭暴打 出手了! 陸證監會擬對恒大創辦人許家印等人採終身證券市場禁入 經濟日報網 7-11聯名可不可熟成紅茶&日本超夯焦糖冰淇淋,獨家3/20限時開賣~ 女子漾 2024白沙屯媽祖進香完整資訊!住宿、穿著、行李、禁忌一次看 媽祖起駕 微軟續推買斷版Office 2024!網好奇Office長期獨佔關鍵 全因這2點稱霸市場 科技玩家 張旭嵐/年輕人新購屋觀 先上車慢慢補票? 房市 00929股價破了21元…這檔就像私藏的提款機! 她:當初一堆人說不會過20 股市 會員享有壽星生日禮、每月好書日,不定期舉辦專屬活動。 會員福利 台北城裡道地香港麵飯點心 1976道地香港美食 部落格 MLB/搞笑又可愛!大谷妻子女籃隊引退畫面曝光 近百萬爭睹 運動 整理包/致癌物蘇丹紅竄全台…吃到怎麼辦?中鏢產品一次看 食安風暴 MLB/老婆來了!真美子與公婆現身高尺巨蛋 為大谷應援 運動 今晚起北東轉雨!最冷恐跌破10度、這日如夏飆破30度 生活 姜妙穿來後,決定痛改前非,狠抱沈宴清大腿 讀創故事 桃園驚傳國中女生墜樓!網爆料疑校園霸凌 校方回應了 社會 影/藝人王陽明車庫遭亂停車 3壯丁在警見證下移至機車格 社會 特別日訂製書 母親節限定版 現在訂購 準時送禮 報時光 投信大買台股金額刷新高 買超最多竟是00940第二大成分股 股市 白沙屯媽祖出發首日 網見「食物被糟蹋」痛批:不怕報應嘛 旅遊 新聞快訊立即掌握!更多好康報你知! udn News APP 羽球/戴資穎奧運積分被山口茜反超 世界排名第3也危險 運動 嗆韓不懂?洪申翰:唱名3次不在場可跳過不適用總質詢 要聞 【琅琅書店】春日百書盛開,漫遊琅琅書店 琅琅悅讀 全台最大美容盛事登場 2024熱烈徵展中 Twitch直播新招!實況主用屁屁當投影綠幕掀話題 VTuber選擇用「前面」 遊戲 北市大樓「電梯舊換新突作動」 工人遭壓斷腿急送醫 社會 提供點數服務,可用來消費電子小說、電子刊物、贊助好文 U 利點數 落海金門釣客已打電話報平安 陸國台辦:盡快安排人船返金 兩岸 一個打十個!去年台積電一家公司營業利益抵南韓前十大 全球 耳悶、耳鳴是聽力下降前兆 輕忽聽損恐致大腦退化失智 元氣網 緊急救火!台中銀原任副董施建安 回鍋升任新董事長 產經 蘇丹紅燒不完!今又揪2批 食藥署:最快一周內清查完畢 生活 鴻海股價甩尾創13年半來高點 再寫5大驚奇 股市 長大後才懂!她一聽「飄洋過海來看你」爆哭 全網狂推1金牌作詞人 Oops 非裔校警離鄉背井10多年 美男大生幫募資非洲旅費 全球 花120萬買新車不到3個月問題一堆 網看完秒曝:業務問題很大 Oops 玩交友軟體「一票弟弟狂約泡溫泉」 34歲女崩潰:適婚男性在哪裡? 生活 新光大股東得再掏錢! 金管會:新壽RBC未達標前都免談 產經 冒名蕭萬長妻、菲總統杜特蒂吸金 假會計師判賠8.6億 社會 《淚之女王》是真實故事改編?三星女繼承人為愛和「保鑣結婚」 17年後「付上百億贍養費」離婚收場 時尚 入門之戰?MG傳將以MG2加入親民電動車戰場! 車訊 擁抱千瘡百孔的祖國:為何俄羅斯暴力相待,卻是伊蓮娜「我深愛的國家」? 轉角國際 她看直播花上萬元買了超萌金漸層 到家短短5天就猝死!飼主:被「星期貓」騙了 寵物部落 獨/李國毅旦角粉墨登場幕後 吐緊箍咒「完了要死了」 噓!星聞 出手了! 陸證監會擬對恒大創辦人許家印等人採終身證券市場禁入 經濟日報網 7-11聯名可不可熟成紅茶&日本超夯焦糖冰淇淋,獨家3/20限時開賣~ 女子漾 微軟續推買斷版Office 2024!網好奇Office長期獨佔關鍵 全因這2點稱霸市場 科技玩家 張旭嵐/年輕人新購屋觀 先上車慢慢補票? 房市 00929股價破了21元…這檔就像私藏的提款機! 她:當初一堆人說不會過20 股市 MLB/搞笑又可愛!大谷妻子女籃隊引退畫面曝光 近百萬爭睹 運動 MLB/老婆來了!真美子與公婆現身高尺巨蛋 為大谷應援 運動 今晚起北東轉雨!最冷恐跌破10度、這日如夏飆破30度 生活 桃園驚傳國中女生墜樓!網爆料疑校園霸凌 校方回應了 社會 影/藝人王陽明車庫遭亂停車 3壯丁在警見證下移至機車格 社會 投信大買台股金額刷新高 買超最多竟是00940第二大成分股 股市 白沙屯媽祖出發首日 網見「食物被糟蹋」痛批:不怕報應嘛 旅遊 羽球/戴資穎奧運積分被山口茜反超 世界排名第3也危險 運動 嗆韓不懂?洪申翰:唱名3次不在場可跳過不適用總質詢 要聞 Twitch直播新招!實況主用屁屁當投影綠幕掀話題 VTuber選擇用「前面」 遊戲 北市大樓「電梯舊換新突作動」 工人遭壓斷腿急送醫 社會 落海金門釣客已打電話報平安 陸國台辦:盡快安排人船返金 兩岸 一個打十個!去年台積電一家公司營業利益抵南韓前十大 全球 耳悶、耳鳴是聽力下降前兆 輕忽聽損恐致大腦退化失智 元氣網 緊急救火!台中銀原任副董施建安 回鍋升任新董事長 產經 蘇丹紅燒不完!今又揪2批 食藥署:最快一周內清查完畢 生活 鴻海股價甩尾創13年半來高點 再寫5大驚奇 股市 長大後才懂!她一聽「飄洋過海來看你」爆哭 全網狂推1金牌作詞人 Oops 非裔校警離鄉背井10多年 美男大生幫募資非洲旅費 全球 花120萬買新車不到3個月問題一堆 網看完秒曝:業務問題很大 Oops 玩交友軟體「一票弟弟狂約泡溫泉」 34歲女崩潰:適婚男性在哪裡? 生活 新光大股東得再掏錢! 金管會:新壽RBC未達標前都免談 產經 冒名蕭萬長妻、菲總統杜特蒂吸金 假會計師判賠8.6億 社會 中職/流程跑完!曾豪駒掌12強兵符拍板 2周籌組教練團 運動 斷鏈自行車專用道成偷拍違規熱點 機車族哀號:交通陷阱 地方 太陽花運動十週年 數百人重返立法院紀念 要聞 參選區黨部主委資格卻不符 藍議員爆料稱黨籍被黑箱搬運 要聞 慶102歲生日!唐爺爺洗腎長達20年 名醫分享護腎7大撇步 生活 兩樣情!小一新生少千人憂減班 國中新生卻增3千擔心教室不夠 文教 詐團首腦卸了電子腳環後疑棄保潛逃 法界人士:防逃機制形同虛設 社會 男友吃飯主動付錢!她卻列「4事件」嘆小氣 網一面倒勸分 生活 股王世芯2月獲利年增104% EPS 4.52元 股市 尾牙爽中汽車!她「2原因」喊超苦惱 網羨:根本穩賺不賠 Oops 柯文哲農地改善限期已到 竹市:收到恢復農用資料 要聞 彭博:歐盟擬與美聯手 管制陸成熟製程晶片 全球 傅崐萁:立委不該以書面質詢 代替口頭質詢 要聞 製造業無薪假降溫? 一電子零組件、一印刷廠合計再通報600人 產經 退房沒發票…旅宿業者回「要多收5%」 網傻眼:國稅局快出動 Oops 二十年河西 南韓平均薪資超車日本 全球 川普經濟顧問提下任Fed主席建議名單 「他」不在其中 全球 刊登廣告 FAQ 客服 新聞授權 服務條款 著作權 隱私權聲明 聯合報系 訂報紙 關於我們 網站總覽
## 範例
import requests
from bs4 import BeautifulSoup
response = requests.get('https://udn.com/news/index')
bts = BeautifulSoup(response.text, 'lxml')
tag_a = bts.find_all('a', limit=5)
#print(tag_a)
for i in tag_a:
if(i.string == None):
if(i.get_text()!=''):
print(i.get_text())
else:
print(i.string)
聯合報 經濟日報 陽光行動
## 範例
import requests
from bs4 import BeautifulSoup
response = requests.get('https://global.udn.com/global_vision/story/8664/5400600?form=udn_ch2_common3_cate')
bts = BeautifulSoup(response.text, 'lxml')
tag_div = bts.find_all('div', attrs={"class":"introduction_1"})
for i in tag_div:
print(i.get_text())
人人平等的美國夢終將夢醒? 一趟跟著列車搖啊搖的美國夢 把我的美國夢搖醒了,宣布幸福不會來了 下一站,人人平等? 「不管我們過去在家鄉過是如何,到了美國就是每個人都平等。」
get()
: 獲取屬性值內容has_attr()
:判斷是否有該屬性## 範例
from bs4 import BeautifulSoup
html_string = "<span class='example span'>Example</span>"
bts = BeautifulSoup(html_string, 'lxml')
f_span = bts.find('span')
if(f_span.has_attr('class')):
print(f_span.get('class'))
['example', 'span']
## 範例 - 猜以下執行結果
from bs4 import BeautifulSoup
html_string = """
<div>
<ul>
<li><a class="link" href='http://www.google.com.tw'>Google</a></li>
<li><a class="link" href='http://www.yahoo.com.tw'>Yahoo</a></li>
</ul>
</div>
<div>
<ul>
<li><a class="link" href='https://www.pchome.com.tw/'>PCHome</a></li>
<li><a class="link" href='https://www.yam.com/'>Yam</a></li>
</ul>
</div>
"""
print("html結構:", html_string)
bts = BeautifulSoup(html_string, 'lxml')
bts_div = bts.find('div')
bts_div_a = bts_div.find_all('a')
for i in bts_div_a:
print(i.get) #猜執行結果
html結構: <div> <ul> <li><a class="link" href='http://www.google.com.tw'>Google</a></li> <li><a class="link" href='http://www.yahoo.com.tw'>Yahoo</a></li> </ul> </div> <div> <ul> <li><a class="link" href='https://www.pchome.com.tw/'>PCHome</a></li> <li><a class="link" href='https://www.yam.com/'>Yam</a></li> </ul> </div>
html
結構如下<div>
<ul>
<li><a class="link" href='http://www.google.com.tw'>Google</a></li>
<li><a class="link" href='http://www.bing.com'>Bing</a></li>
<li><a class="link" href='http://www.yahoo.com.tw'>Yahoo</a></li>
</ul>
</div>
<div>
<ul>
<li><a class="link" href='https://www.pchome.com.tw/'>PCHome</a></li>
<li><a class="link" href='https://www.youtube.com/'>Youtube</a></li>
<li><a class="link" href='https://www.yam.com/'>Yam</a></li>
</ul>
</div>
http://www.google.com.tw
https://www.pchome.com.tw/
http://www.yahoo.com.tw
https://www.yam.com/