Python3 靜態爬蟲

更新於 發佈於 閱讀時間約 5 分鐘
有時候需要抓一些網路上的資料
而靜態網頁的呈現方式就是 html
這篇記錄一下怎麼用 Python3 抓靜態網頁上的文字
(以下部分為網路資料擷取)

開始

這裡以抓 ptt 網頁版為範例
要爬靜態 html 之前
必須先了解"你要抓的文字"是在哪裡
開啟網頁後, 按下 F12 可以看到每個元素對應到的 html 位置
左鍵按一下左下角的箭頭框框 (或按 ctrl+shift+C)
再把滑鼠指到你要抓的文字
然後再按一下左鍵
可以看到這行文字出現在 html 的哪個位置
靜態爬蟲需要這樣的資訊

程式碼

首先我們必須先有辦法存取這個網頁
這個部分 python3 已經有urllib.request包好了
如下
import urllib.request
url = "https://disp.cc/b/PttHot" # The website url you want to access
response = urllib.request.urlopen(url)
data = response.read()
text = data.decode('utf-8-sig')
print(text)
執行
py -3 main.py
可以看到這個網頁目前的 html 已經都抓下來了
現在的目標就是抓取"你要抓的文字"
這個部分 python3 已經有BeautifulSoup包好了
from bs4 import BeautifulSoup
soup = BeautifulSoup(text, "lxml") # parse
回到剛剛上面利用 F12 所看到的 html 發現它的標題內容都是放在
span class = 'L34 nowrap listTitle', id = 'titleXXXXX'
其中 id 的部分 可以看到是第幾篇的意思, title52419, 第 52419 篇
也很剛好的, 在 list-num 就有顯示是第幾篇
span class = 'list-num'
因此這裡用 BeautifulSoup 裡面 find_all() 的方法 這裡帶有 span 裡面的 attribute 例如要找 list-num
soup = BeautifulSoup(text, "lxml") # parse
listIdxs = soup.body.find_all('span', attrs={'class':'list-num'}) # get all list
例如要找標題內容
targets = soup.body.find_all('span', attrs={'class':'L34 nowrap listTitle', 'id':'title52419'})
import urllib.request
from bs4 import BeautifulSoup

def downLoad():
url = "https://disp.cc/b/PttHot"

response = urllib.request.urlopen(url)
data = response.read() # a `bytes` object
text = data.decode('utf-8-sig') # a `str`; this step can't be used if data is binary
return text

print("downloading.. ")
print("=============================")
text = downLoad()
soup = BeautifulSoup(text, "lxml") # parse
listIdxs = soup.body.find_all('span', attrs={'class':'list-num'}) # get all list
for listIdx in listIdxs:
targets = soup.body.find_all('span', attrs={'class':'L34 nowrap listTitle', 'id':'title'+listIdx.text})
for ta in targets:
print(ta.text)

執行結果

參考

留言0
查看全部
avatar-img
發表第一個留言支持創作者!
心血來潮突然想用google excel來記錄每天的花費 有一些小地方想用指令碼來方便自己作業
心血來潮突然想用google excel來記錄每天的花費 有一些小地方想用指令碼來方便自己作業
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
網路爬蟲的由來 網路爬蟲,也叫網路蜘蛛(spider),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。網路搜尋引擎等站點通過爬蟲軟體更新自身的網站內容或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來,以便搜尋引擎事後生成索引供使用者搜尋。 網路爬蟲的原理
Thumbnail
你知道嗎?網路爬蟲其實是整個搜尋世界的起點。爬蟲將所有上線的網頁快速瀏覽後並整理重點做索引,這樣搜尋引擎才能快速檢索相關內容。今天本男爵就來跟大家好好聊一下,在網路世界中無所不在,但你可能卻從未察覺到的這條「蟲」。
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
在 Python 中,dir() 函式用於列舉對象的所有屬性和方法。這包括對象的內建屬性、方法以及自定義的屬性和方法。以下是一個簡單的示例: 列舉所有屬性與方法 class MyClass: def __init__(self): self.attribute1 = 42
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。
Thumbnail
在數據分析的工作中,處理 CSV 檔案是一項基礎且重要的技能,CSV 格式的檔案是以純文字形式儲存表格數據,簡潔的結構使其普遍應用於數據儲存。本文將介紹如何使用Python 來讀取、處理和儲存 CSV 檔案。
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
網路爬蟲的由來 網路爬蟲,也叫網路蜘蛛(spider),是一種用來自動瀏覽全球資訊網的網路機器人。其目的一般為編纂網路索引。網路搜尋引擎等站點通過爬蟲軟體更新自身的網站內容或其對其他網站的索引。網路爬蟲可以將自己所訪問的頁面儲存下來,以便搜尋引擎事後生成索引供使用者搜尋。 網路爬蟲的原理
Thumbnail
你知道嗎?網路爬蟲其實是整個搜尋世界的起點。爬蟲將所有上線的網頁快速瀏覽後並整理重點做索引,這樣搜尋引擎才能快速檢索相關內容。今天本男爵就來跟大家好好聊一下,在網路世界中無所不在,但你可能卻從未察覺到的這條「蟲」。
Thumbnail
對於剛接觸Python程式的使用者來說,要一口氣學會爬蟲可能相對困難,但若想即時且輕鬆獲得台股相關數據,你可以利用證交所所提供的API進行數據蒐集。只需要簡單幾行程式碼,就能輕鬆抓到台股上千支股票的每日資訊,是不是棒呆了!!
Thumbnail
透過分析臺灣好行的公開資料,分享如何用Python繪製折線圖
Thumbnail
本文介紹瞭如何使用 Python pandas 進行資料分析,包括如何使用 corr() 函數針對數字類型的欄位進行分析,以及如何刪除不需要的欄位和取得想要的小數位數。
Thumbnail
在 Python 中,dir() 函式用於列舉對象的所有屬性和方法。這包括對象的內建屬性、方法以及自定義的屬性和方法。以下是一個簡單的示例: 列舉所有屬性與方法 class MyClass: def __init__(self): self.attribute1 = 42
Thumbnail
JSON 格式因為其輕巧、易於讀寫的特性,所以普遍應用於數據儲存。本文將介紹如何使用 Python 來讀取、處理、解析和修改 JSON 檔案。
Thumbnail
在數據分析的工作中,處理 CSV 檔案是一項基礎且重要的技能,CSV 格式的檔案是以純文字形式儲存表格數據,簡潔的結構使其普遍應用於數據儲存。本文將介紹如何使用Python 來讀取、處理和儲存 CSV 檔案。