2023年5月13日 星期六

爬蟲筆記-HTML中如何擷取需要的元素、屬性



我們現在要來爬取巴哈姆特首頁中提到薩爾達的部分

使用F12查找後發現,他被包在這個div標籤裡面 


 

response=requests.get('https://www.gamer.com.tw/',headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'})
print(reponse)
data=response.text
#解析HTML
#import bs4
print('-')
root=bs4.BeautifulSoup(data,'html.parser')
titles=root.find_all('div',class_='gnn-text')
print(type(titles))
#此時得titles<class 'bs4.element.ResultSet'>,
#存在於使用類似find_all查找文檔中所有符合條件的標籤後,返回的對象類型
#ResultSet是可迭代的,可以透過循環來訪問其中的每個元素,而每個元素又都是Tag物件,代表文檔中一個HTML標籤
for title in titles:
    if "薩爾達" in title.string:
        print(type(title))
        print(title.string)
-----------------------------------
<class 'bs4.element.ResultSet'> <class 'bs4.element.Tag'> 【試玩】《薩爾達傳說 王國之淚》加入 DIY 要素讓自由度和挑戰樂趣都進一步提升 <class 'bs4.element.Tag'> 【開箱】《薩爾達傳說 王國之淚》實體典藏版「Collector's Edition」內容物一覽


----------------------------------------------
在查找HTML文檔的css屬性時, 就不能使用find or find_all
必須使用select()方法, 並提供CSS選擇器作為參數,定位CSS標籤位置,
CSS屬性會由一組鍵和值組成,用來定義HTML元素樣式

<p style="color: red;">這是一個紅色的段落。</p>
這段程式碼中style是CSS,其中"color: red;" 是CSS屬性
CSS属性,它是用于定义HTML元素样式的一组键值对。在HTML标签中,可以使用 style 属性来定义CSS样式。“color: red;” 是CSS属性的一种表示形式,其中“color”是属性名,而“red”是属性值。在 p 标签中,这个 style 属性定义了文本颜色为红色。

現在來練習 查找HTML文檔中的css屬性







place_lines=root.select(".gnn-text")
print(type(place_lines),place_lines)
for i in place_lines:
    print(type(i))
    print(i.string)
#如果遇到None可能會發生錯誤, 必要時可以使用 if i.string!=None:  避免例外
    print(i.text)
    print(i.get_text())
#這邊i.string有可能會得到None,所以可以改成 i.text 或是 i.get_text()  
#他們會回傳選取元素的的純文字內容, 不包含符號,空格,標籤屬性
print('-'*50)
line=root.select(".gnn-text:-soup-contains('英雄聯盟')")
#.gnn-text是class屬性的選擇器,也就是選擇class=gnn-text的標籤
# 後面的:-soup-contains('英雄聯盟')是指選擇這個標籤並且包含英雄聯盟這個字串
print(line)

-------------------------------
<Response [200]>
-
<class 'bs4.element.ResultSet'>
<class 'bs4.element.Tag'>
【試玩】《薩爾達傳說 王國之淚》加入 DIY 要素讓自由度和挑戰樂趣都進一步提升
<class 'bs4.element.Tag'>
【開箱】《薩爾達傳說 王國之淚》實體典藏版「Collector's Edition」內容物一覽
<class 'bs4.element.ResultSet'> [<div class="gnn-text">《英雄聯盟》季中邀請賽分組賽今晚韓國 LCK 兩強對決 GEN 對戰 T1</div>, <div class="gnn-text">「夏季遊戲
節 Summer Game Fest」6 月 9 日登場 PS、Xbox 等 40 多家遊戲廠商共襄盛舉</div>, <div class="gnn-text">《蜘蛛人:穿越新宇宙》公開第三波宣傳影片 蜘蛛貓於影中現 
身</div>, <div class="gnn-text">《鐵拳 8》公布跆拳道高手「花郎」實機遊玩宣傳影片</div>, <div class="gnn-text">【試玩】《薩爾達傳說 王國之淚》加入 DIY 要素讓 
自由度和挑戰樂趣都進一步提升</div>, <div class="gnn-text">粉絲製作 hololive 主題遊戲《HOLOCURE》宣布將登上 Steam 平台</div>, <div class="gnn-text">【開箱】《
薩爾達傳說 王國之淚》實體典藏版「Collector's Edition」內容物一覽</div>, <div class="gnn-text">融合捕捉怪獸、探索要素的動作冒險新作《合成怪獸 Synth Beasts》預
定今年問世</div>, <div class="gnn-text">《超級棒球 4》釋出新實機展示影片 帶領玩家一窺遊戲畫面及系統玩法等</div>, <div class="gnn-text">相隔超過十年!《憤怒鳥
》衍生系列新作《搗蛋豬 2》於北歐等地區推出</div>, <div class="gnn-text">相隔十年 《巨靈 Reus》續作《巨靈 2》今日發表 運用眾神力量塑造人類!</div>, <div class="gnn-text">日本中央競馬會與《FF XIV》開設合作網站 推出賽馬小遊戲等趣味內容</div>, <div class="gnn-text">【電玩瘋】648 集 《FF XVI》11個特色、《Idol Showdown》下載量突破 20 萬</div>, <div class="gnn-text">京都動畫縱火殺人案 預定將於今年 9 月展開初審 並於明年 1 月宣布判決結果</div>, <div class="gnn-text">《闇影詩 
章》巴哈姆特獨家公開第 28 彈擴充卡包「不屈的鬥志」等新卡資訊</div>, <div class="gnn-text">ARC SYSTEM WORKS 歡慶創立 35 周年 公開特設網站與電競大賽 ARC WORLD 
TOUR 資訊</div>, <div class="gnn-text">逃離記憶世界的牢籠! 《航海王 時光旅詩》追加劇情 DLC「舊日絮語」5/25 登場</div>, <div class="gnn-text">《Fate/Grand Order》繁中版 2023~6th Anniversary~6 週年紀念福袋召喚登場</div>, <div class="gnn-text">前《英雄聯盟》MMO 製作人鬼蟹成立新工作室 已招募到首批員工</div>]      
<class 'bs4.element.Tag'>
《英雄聯盟》季中邀請賽分組賽今晚韓國 LCK 兩強對決 GEN 對戰 T1
《英雄聯盟》季中邀請賽分組賽今晚韓國 LCK 兩強對決 GEN 對戰 T1
《英雄聯盟》季中邀請賽分組賽今晚韓國 LCK 兩強對決 GEN 對戰 T1
<class 'bs4.element.Tag'>
「夏季遊戲節 Summer Game Fest」6 月 9 日登場 PS、Xbox 等 40 多家遊戲廠商共襄盛舉
「夏季遊戲節 Summer Game Fest」6 月 9 日登場 PS、Xbox 等 40 多家遊戲廠商共襄盛舉
「夏季遊戲節 Summer Game Fest」6 月 9 日登場 PS、Xbox 等 40 多家遊戲廠商共襄盛舉
<class 'bs4.element.Tag'>
《蜘蛛人:穿越新宇宙》公開第三波宣傳影片 蜘蛛貓於影中現身
《蜘蛛人:穿越新宇宙》公開第三波宣傳影片 蜘蛛貓於影中現身
《蜘蛛人:穿越新宇宙》公開第三波宣傳影片 蜘蛛貓於影中現身
<class 'bs4.element.Tag'>
《鐵拳 8》公布跆拳道高手「花郎」實機遊玩宣傳影片
《鐵拳 8》公布跆拳道高手「花郎」實機遊玩宣傳影片
《鐵拳 8》公布跆拳道高手「花郎」實機遊玩宣傳影片
<class 'bs4.element.Tag'>
【試玩】《薩爾達傳說 王國之淚》加入 DIY 要素讓自由度和挑戰樂趣都進一步提升
【試玩】《薩爾達傳說 王國之淚》加入 DIY 要素讓自由度和挑戰樂趣都進一步提升
【試玩】《薩爾達傳說 王國之淚》加入 DIY 要素讓自由度和挑戰樂趣都進一步提升
<class 'bs4.element.Tag'>
粉絲製作 hololive 主題遊戲《HOLOCURE》宣布將登上 Steam 平台
粉絲製作 hololive 主題遊戲《HOLOCURE》宣布將登上 Steam 平台
粉絲製作 hololive 主題遊戲《HOLOCURE》宣布將登上 Steam 平台
<class 'bs4.element.Tag'>
【開箱】《薩爾達傳說 王國之淚》實體典藏版「Collector's Edition」內容物一覽
【開箱】《薩爾達傳說 王國之淚》實體典藏版「Collector's Edition」內容物一覽
【開箱】《薩爾達傳說 王國之淚》實體典藏版「Collector's Edition」內容物一覽
<class 'bs4.element.Tag'>
融合捕捉怪獸、探索要素的動作冒險新作《合成怪獸 Synth Beasts》預定今年問世
融合捕捉怪獸、探索要素的動作冒險新作《合成怪獸 Synth Beasts》預定今年問世
融合捕捉怪獸、探索要素的動作冒險新作《合成怪獸 Synth Beasts》預定今年問世
<class 'bs4.element.Tag'>
《超級棒球 4》釋出新實機展示影片 帶領玩家一窺遊戲畫面及系統玩法等
《超級棒球 4》釋出新實機展示影片 帶領玩家一窺遊戲畫面及系統玩法等
《超級棒球 4》釋出新實機展示影片 帶領玩家一窺遊戲畫面及系統玩法等
<class 'bs4.element.Tag'>
相隔超過十年!《憤怒鳥》衍生系列新作《搗蛋豬 2》於北歐等地區推出
相隔超過十年!《憤怒鳥》衍生系列新作《搗蛋豬 2》於北歐等地區推出
相隔超過十年!《憤怒鳥》衍生系列新作《搗蛋豬 2》於北歐等地區推出
<class 'bs4.element.Tag'>
相隔十年 《巨靈 Reus》續作《巨靈 2》今日發表 運用眾神力量塑造人類!
相隔十年 《巨靈 Reus》續作《巨靈 2》今日發表 運用眾神力量塑造人類!
相隔十年 《巨靈 Reus》續作《巨靈 2》今日發表 運用眾神力量塑造人類!
<class 'bs4.element.Tag'>
日本中央競馬會與《FF XIV》開設合作網站 推出賽馬小遊戲等趣味內容
日本中央競馬會與《FF XIV》開設合作網站 推出賽馬小遊戲等趣味內容
日本中央競馬會與《FF XIV》開設合作網站 推出賽馬小遊戲等趣味內容
<class 'bs4.element.Tag'>
【電玩瘋】648 集 《FF XVI》11個特色、《Idol Showdown》下載量突破 20 萬
【電玩瘋】648 集 《FF XVI》11個特色、《Idol Showdown》下載量突破 20 萬
【電玩瘋】648 集 《FF XVI》11個特色、《Idol Showdown》下載量突破 20 萬
<class 'bs4.element.Tag'>
京都動畫縱火殺人案 預定將於今年 9 月展開初審 並於明年 1 月宣布判決結果
京都動畫縱火殺人案 預定將於今年 9 月展開初審 並於明年 1 月宣布判決結果
京都動畫縱火殺人案 預定將於今年 9 月展開初審 並於明年 1 月宣布判決結果
<class 'bs4.element.Tag'>
《闇影詩章》巴哈姆特獨家公開第 28 彈擴充卡包「不屈的鬥志」等新卡資訊
《闇影詩章》巴哈姆特獨家公開第 28 彈擴充卡包「不屈的鬥志」等新卡資訊
《闇影詩章》巴哈姆特獨家公開第 28 彈擴充卡包「不屈的鬥志」等新卡資訊
<class 'bs4.element.Tag'>
ARC SYSTEM WORKS 歡慶創立 35 周年 公開特設網站與電競大賽 ARC WORLD TOUR 資訊
ARC SYSTEM WORKS 歡慶創立 35 周年 公開特設網站與電競大賽 ARC WORLD TOUR 資訊
ARC SYSTEM WORKS 歡慶創立 35 周年 公開特設網站與電競大賽 ARC WORLD TOUR 資訊
<class 'bs4.element.Tag'>
逃離記憶世界的牢籠! 《航海王 時光旅詩》追加劇情 DLC「舊日絮語」5/25 登場
逃離記憶世界的牢籠! 《航海王 時光旅詩》追加劇情 DLC「舊日絮語」5/25 登場
逃離記憶世界的牢籠! 《航海王 時光旅詩》追加劇情 DLC「舊日絮語」5/25 登場
<class 'bs4.element.Tag'>
《Fate/Grand Order》繁中版 2023~6th Anniversary~6 週年紀念福袋召喚登場
《Fate/Grand Order》繁中版 2023~6th Anniversary~6 週年紀念福袋召喚登場
《Fate/Grand Order》繁中版 2023~6th Anniversary~6 週年紀念福袋召喚登場
<class 'bs4.element.Tag'>
前《英雄聯盟》MMO 製作人鬼蟹成立新工作室 已招募到首批員工
前《英雄聯盟》MMO 製作人鬼蟹成立新工作室 已招募到首批員工
前《英雄聯盟》MMO 製作人鬼蟹成立新工作室 已招募到首批員工
--------------------------------------------------
[<div class="gnn-text">《英雄聯盟》季中邀請賽分組賽今晚韓國 LCK 兩強對決 GEN 對戰 T1</div>, <div class="gnn-text">前《英雄聯盟》MMO 製作人鬼蟹成立新工作室  
已招募到首批員工</div>]
(?祈0_30) PS C:\Users\K\OneDrive\桌面\爬蟲0_30> 


標籤:

0 個意見:

張貼留言

訂閱 張貼留言 [Atom]

<< 首頁