※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2019-05-20 15:09:14
看板 Python
作者 標題 [問題] 請問如何了解巴哈姆特的網頁結構以抓資料
時間 Sat May 11 10:07:30 2019
我目前正在練習用巴哈姆特的網頁抓資料
https://www.gamer.com.tw/
舉例來說
我想要抓Android安裝榜
所以我開chrome並使用f12去對網頁資料
然後看到https://imgur.com/a/zCehUFB
接著往上看到https://imgur.com/a/rR8Fy5j
然後往下看到https://imgur.com/a/nniibSr
然後往下看到https://imgur.com/a/itCK19J
但如果我輸入https://pastebin.com/1fMz0ZCk
結果就會失敗
請問我該如何拆解巴哈姆特的網頁架構
還是我的程式本身也有哪裡錯了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.182.206
※ 文章代碼(AID): #1SrYvaBz (Python)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1557540452.A.2FD.html
→ : 有 id 幹嘛不用 id.... <div id="gamechart-hot">1F 05/11 12:09
→ : class 的功能是為了配合 css 和 js 進行瀏覽器渲染加工
→ : 時的分類,所以可以預期幾乎不會是只出現一次
→ : class 的功能是為了配合 css 和 js 進行瀏覽器渲染加工
→ : 時的分類,所以可以預期幾乎不會是只出現一次
推 : 要寫爬蟲最好去了解一下 html4F 05/11 12:49
→ : 只是也如art1所說,不懂html結構的話很難進行下去7F 05/11 18:40
→ : 我現在才知道,要抓資料要同時懂程式跟網頁才行
→ : 因為我不斷縮小https://pastebin.com/FBTjW4w9
→ : 我現在才知道,要抓資料要同時懂程式跟網頁才行
→ : 因為我不斷縮小https://pastebin.com/FBTjW4w9
→ : 卻無法拆解出最後的部分,讓我可以拉出排行榜的遊戲名10F 05/11 20:05
→ : 附帶一題,請問id或class的名稱你們都是怎麼打的
→ : 我都只能一邊看網頁右邊的名稱一邊用手打字
→ : 沒有直接COPY貼上到程式裡頭的方法嗎
→ : 附帶一題,請問id或class的名稱你們都是怎麼打的
→ : 我都只能一邊看網頁右邊的名稱一邊用手打字
→ : 沒有直接COPY貼上到程式裡頭的方法嗎
推 : print(soup.select('a.hotgame > p.game'))14F 05/11 20:26
→ : 這是利用 css 選擇器來選到你要的元素,所以也要去了解一下
→ : 這樣才能比較有效率的抓出想要的資料
推 : select 會回傳串列(list),所以串列元素的text就是你要的
→ : 這是利用 css 選擇器來選到你要的元素,所以也要去了解一下
→ : 這樣才能比較有效率的抓出想要的資料
推 : select 會回傳串列(list),所以串列元素的text就是你要的
→ : 所以我猜你的程式意思是把a class="hotgame"到19F 05/12 00:10
→ : p class="game"之間的資料以序列形式抓出來
→ : 只是我不明白若我想要只看最後排行榜的資料
→ : 為何是這種結果https://pastebin.com/AK5byWc1
→ : p class="game"之間的資料以序列形式抓出來
→ : 只是我不明白若我想要只看最後排行榜的資料
→ : 為何是這種結果https://pastebin.com/AK5byWc1
推 : 你要注意印出來的資料最前面跟最後面有 [跟]25F 05/12 00:38
→ : 這代表在裡面(也就是串列list)的元素是以逗號 , 隔開
→ : 串列裡面的每一個元素其實都是 bs4 建構的一種物件,包含了
→ : 各種資料和函式,你需要的只是串列元素的text屬性值,至於
→ : 排行,初步看是按照串列裏面的順序,因為神魔存在索引值 0
→ : 的位置
→ : 存取text屬性值的程式碼像這樣
→ : soup.select('a.hotgame > p.game').text
→ : 實際上不會這樣存取,而是用 for..in...迴圈來讀取
→ : for item in soup.select('a.hotgame > p.game'):
→ : print(item.text)
推 : a.hotgame > p.game 是指只要有符合這個順序與類別名稱的
→ : html 元素都抓出來
→ : 應該還要加上一個標籤名稱才對
→ : select 應該是專門用來透過 CSS 選擇器找資料的函式
→ : 應該說找 html 元素才對
→ : 這代表在裡面(也就是串列list)的元素是以逗號 , 隔開
→ : 串列裡面的每一個元素其實都是 bs4 建構的一種物件,包含了
→ : 各種資料和函式,你需要的只是串列元素的text屬性值,至於
→ : 排行,初步看是按照串列裏面的順序,因為神魔存在索引值 0
→ : 的位置
→ : 存取text屬性值的程式碼像這樣
→ : soup.select('a.hotgame > p.game').text
→ : 實際上不會這樣存取,而是用 for..in...迴圈來讀取
→ : for item in soup.select('a.hotgame > p.game'):
→ : print(item.text)
推 : a.hotgame > p.game 是指只要有符合這個順序與類別名稱的
→ : html 元素都抓出來
→ : 應該還要加上一個標籤名稱才對
→ : select 應該是專門用來透過 CSS 選擇器找資料的函式
→ : 應該說找 html 元素才對
→ : 我原本以為是直接去把<p class="game">後的答案抓出來42F 05/12 09:24
→ : 但看來不是,而是遊戲名稱是屬於item要用for叫出來才對
→ : 你說的"a.hotgame > p.game 是指只要有符合這個順序
→ : 與類別名稱的html 元素都抓出來"是指串列裡原本有很多
→ : 資料,但是透過a.hotgame > p.game分離出想要的部分
→ : 請問是這樣嗎?
→ : 另外,請問你有何推薦的網頁架構或是抓資料的資源
→ : 這樣一來我日後要練習的話比較容易找到起點
→ : 搞不懂自己錯在哪裡也搞不懂自己對在哪裡真的很頭痛
→ : 但看來不是,而是遊戲名稱是屬於item要用for叫出來才對
→ : 你說的"a.hotgame > p.game 是指只要有符合這個順序
→ : 與類別名稱的html 元素都抓出來"是指串列裡原本有很多
→ : 資料,但是透過a.hotgame > p.game分離出想要的部分
→ : 請問是這樣嗎?
→ : 另外,請問你有何推薦的網頁架構或是抓資料的資源
→ : 這樣一來我日後要練習的話比較容易找到起點
→ : 搞不懂自己錯在哪裡也搞不懂自己對在哪裡真的很頭痛
推 : 對,因為 soup 就是用來存 html 解析之後得到的資料51F 05/12 10:57
→ : 我一開始寫爬蟲時對 html 跟 python 都不太了解,也是像你這
→ : 樣一層一層找下去,但這種方式太痛苦了
→ : 後來學了 html 之後,就比較知道要怎麼快速取出已解析的html
→ : 元素
→ : 在學的時候是連 CSS、JavaScript一起學,實際用 JavaScript
→ : 透過 CSS 選擇器去操作各種 html 元素
→ : 所以之後就了解到 bs4 已經幫我們把 html 元素都解出來了
→ : 只要知道存在哪些對應的位置,並學會取出的語法就好
→ : 如果不懂 CSS 選擇器的話,用找字串的方式去處理比較沒效率
推 : 看別人寫爬蟲都是練習爬一些把資料整合呈現的網站,例如電影
→ : 相關、拍賣相關、股票相關之類的
→ : 我一開始寫爬蟲時對 html 跟 python 都不太了解,也是像你這
→ : 樣一層一層找下去,但這種方式太痛苦了
→ : 後來學了 html 之後,就比較知道要怎麼快速取出已解析的html
→ : 元素
→ : 在學的時候是連 CSS、JavaScript一起學,實際用 JavaScript
→ : 透過 CSS 選擇器去操作各種 html 元素
→ : 所以之後就了解到 bs4 已經幫我們把 html 元素都解出來了
→ : 只要知道存在哪些對應的位置,並學會取出的語法就好
→ : 如果不懂 CSS 選擇器的話,用找字串的方式去處理比較沒效率
推 : 看別人寫爬蟲都是練習爬一些把資料整合呈現的網站,例如電影
→ : 相關、拍賣相關、股票相關之類的
→ : 給art1,我還是第一次聽說CSS選擇器,請問這是軟體嗎63F 05/12 13:39
→ : 請問你都推薦哪種?或是哪種網頁你比較推薦我去瞭解
→ : 我以後要抓網頁的話,也是需要有一個好的起點,不然
→ : 我這樣瞎猜也不是辦法,還是要對網頁架構有足夠瞭解
→ : 請問你都推薦哪種?或是哪種網頁你比較推薦我去瞭解
→ : 我以後要抓網頁的話,也是需要有一個好的起點,不然
→ : 我這樣瞎猜也不是辦法,還是要對網頁架構有足夠瞭解
推 : developer.mozilla.org/zh-TW/docs/Glossary/CSS_Selector67F 05/12 15:41
→ : 前面自行加上https://
→ : 前面自行加上https://
→ : 多謝,原來mozilla就有資料,我只知道FIREFOX而已69F 05/12 18:02
推 : google比別人給要來的更好70F 05/12 21:41
推 : 右鍵 編輯html71F 05/13 21:33
→ : 這樣就能複製了
→ : 這樣就能複製了
--
※ 看板: terievv 文章推薦值: 0 目前人氣: 0 累積人氣: 299
回列表(←)
分享