[問題] 新手學python想抓網頁資料

作者: yeeche (yeech)   2019-07-25 23:01:44
各位前輩好
小弟是python新手 程度應該很low
想請教一下用python抓網頁的功能
http://ww2.money-link.com.tw/etf/Ranking2.html
我想抓取這個網頁的資訊
目前有看網路自學基本的python 包含list dictionary等
我是看py4e 也是coursera裡面那個Michigan python教學
也看網路學會panda還有簡單的 beautiful soup
抓一些比較簡單的網站資料
可是這個網站的資訊 好像是屬於動態資料
原始網頁資料並沒有這些數據
上網看了一下 找到類似的教學也是 : beautiful soup
https://www.youtube.com/watch?v=FSH77vnOGqU&t=726s
但是可能對我來說有點太跳級了 實在很難懂
查了版上的資訊 好像還有selenium scrapy等等
想請教一下各位高手 以如果要抓這種網頁
到底需要懂哪些工具比較好呢?
有哪些適合新手的教學網站會教關於抓取這種網站的?
可否給點指教
作者: alvinlin (林矜業)   2019-07-25 23:40:00
剛好我最近也在研究類似的內容。我花了點時間看你的內容。其實這個網頁不太難。它已經在後端跑完了,前端只是HTML而己。首先你要去研究一下HTML的結構。然後如果還有時間,看一下JavaScript。你的Ytb的那個連結只是和你說如果你的網頁前端有JavaScript在執行,你用來抓網頁的內容會變得不同,因為JS會改變網頁呈現的內容。總結就是,python把很多東西簡化了,但如果你不了解它幫你簡化的東西,你還是得先花時間瞭解它才知道怎麼運用。以你的例子,bs4,scrpy,它的背後還是HTML的結構,如果你不了解DOM tree, HTML elements, Tags, nodes, 這些都值得你很快的去看一下再回來爬蟲這個題目。我前陣子剛好在讀jJavaScript,有些也看不太懂,所以去翻了HTML的書,兩相對照就看懂了。提供你參考。
作者: TitanEric (泰坦)   2019-07-25 23:56:00
推樓上用心回答~
作者: vi000246 (Vi)   2019-07-26 01:41:00
看起來是用F1_10_ETFData.json來render頁面的1.開F12看Network->XHR頁籤使用的api2.用js解析json裡的資料 應該就能抓到你要的東西了
作者: yummy8765 (tsuyoku)   2019-07-26 06:51:00
推1~n樓用心回答
作者: powyo (光子郎)   2019-07-26 09:23:00
不嫌速度慢的話用selenium最簡單selenium 自動化操作只要搞懂裡面的doom物件名稱就好
作者: yeeche (yeech)   2019-07-26 09:48:00
太感謝樓上所有大大的認真說明所以 聽起來我要先搞懂的關鍵字
作者: powyo (光子郎)   2019-07-26 09:50:00
最簡單用chrome 按F12看就好
作者: yeeche (yeech)   2019-07-26 09:52:00
1. HTML 2. doom 3. javascript 然後再去看爬蟲 對嗎?
作者: powyo (光子郎)   2019-07-26 09:53:00
https://i.imgur.com/M0l0F6A.pngchrome開起來 按F12 就能看到裡面的元素把你要抓的部分 看他是哪層元素包起來
作者: yeeche (yeech)   2019-07-26 09:55:00
謝謝powyo大大 在請問一個丟臉的小問題
作者: powyo (光子郎)   2019-07-26 09:55:00
用selenium 可以指定抓取元素
作者: powyo (光子郎)   2019-07-26 09:58:00
不懂你的意思 你是要抓取全部的資料? 還是特定的
作者: yeeche (yeech)   2019-07-26 09:59:00
我會先去看看能否看懂selenium 謝謝大家的回覆
作者: powyo (光子郎)   2019-07-26 09:59:00
看起來這網站會定時更新資料 所以抓到的也不是最新的
作者: yeeche (yeech)   2019-07-26 10:00:00
也非常感謝 alvinlin vi000246 熱情回應對 我要每隔一段時間抓取 like 5min醬子抓取那些數字的資料 就是我以為的動態資料我不用很即時 甚至15min抓一次 也很OK
作者: powyo (光子郎)   2019-07-26 10:05:00
那就用個timer去抓取就好啊 甚至用排程也可以
作者: yeeche (yeech)   2019-07-26 10:08:00
對 我是打算用timer
作者: jwolf1211 (corner1211)   2019-07-30 19:21:00
是打算寫投資用的?

Links booklink

Contact Us: admin [ a t ] ucptt.com