online gambling singapore online gambling singapore online slot malaysia online slot malaysia mega888 malaysia slot gacor live casino malaysia online betting malaysia mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 mega888 [Python][教學] 網路爬蟲(crawler)實務(上)--網頁元件解析

 今年部落格最受歡迎文章:[Python] 現學現賣之網路爬蟲(Crawler)--以抓本BLOG為例是我剛學python時寫的程式,內容其實也都是照著老師的課程講義來做,很多細節也是矇懞懂懂.至今過了半年,爬網的經驗也多了一點,比較有內容可以跟大家分享.爬網有很多種用途,對比起搜尋引擎的全頁抓取,更多時候是抓取特定網站的特定內容,這時候除了爬蟲程式本身之外,對於網站欄位的解析更為重要.


 

 

  • 網頁解析工具
    現在各大瀏覽器都有網站解析工具可以看到網站的原始碼,只要打開想要的網站,開啟網站解析工具就可以,以下例子使用的是Safari內建的Web Inspectr.以愛評網網為例:先連到首頁,搜尋想要找的餐廳:
 
  • 打開Web Inspector:
 
  • 下方會出現Web Inspector:
  • 依節點點開網站架構:
 
  • 點選TimeLine可以看到網頁讀取每個元件的時間:
  • 點進去可以看到網站連結的真實網址(我們之後會用到):
  • 接著就要思考我們究竟要抓什麼東西?這邊我是想搜集每個商店的名稱,電話和地址.但是網頁原始碼落落長,要怎樣找到所要的節點資訊?可以透過Inspect小工具:


 

  • 點下去之後,將指標移到想觀察的元件上,就會出現對應的位置,從原始碼中可以很清楚看到店名alochas野草,很明顯地出現在的a tag(<a>......</a>)之間,這表示程式可以很輕易地抓到這個內容:


 

  •  接著觀察電話,會發現電話沒有直接顯示在原始碼中,原始碼出現的是一個img檔案(這是因為網站想反爬網做的處理,一般爬網程式無法抓取不是顯示在原始碼內的東西):
 
  • 這時候該怎麼辦呢?把圖片抓下來用ORC?當然也是一種做法,但是這樣太麻煩了,所以我決定繞一下,看有沒有地方顯示資料:
  • 點進野草的連結,發現這邊也有顯示電話:
  • 再啟動Inspect看一下內容,非常開心這邊的電話號碼是有標示在原始碼中的!:
  • 這時候一切謎底都解開了,接著我們可以就這樣的結構設計爬蟲來爬特定欄位了(待續...希望不要因為這篇文章讓網站改版orz)!

資料來源:Bryan的行銷研究及資料分析筆記


留下你的回應

以訪客張貼回應

0

在此對話中的人們