作者localhostphp (A動動)
看板Python
標題Re: [問題]爬蟲問題
時間Sat Aug 24 16:27:05 2013
※ 引述《Thisisnotptt (這不是PTT)》之銘言:
: 小弟最近想練習python的抓站功能,目的是每天定時抓取記憶體顆粒網站的價格
: 但是小弟功力尚淺,怎麼撈都只撈到 "loading...." 撈不到載入過後的表格內文
: 小弟嘗試加入等待時間,但是不是很有效,以下是程式碼,請問該如何抓取載入
: 後的內文呢?
: 網站: DRAMeXchange
: 網址: http://www.dramexchange.com/#memory
: 小弟抓到的狀況都是如圖右,在入中的程式碼,加入延遲後還是得不到圖左的內文
: 圖片: http://www.imgur.com/a7zmgyM.jpg
: <tr>
: <td align="center" colspan"12">
: <img scr ="Common/Images/ajax_loading.gif"/>
: <br/>
: loading.....
: <font color="#FFFFFF">DDR3 2G 256Mx8 1333MHz, DDR3 2Gb 256Mx8 eTT,<br/>
: DDR3 1Gb 128Mx8 eTT, DDR3 1Gb 128Mx8 1333Mhz<br/>
: .
: .
: .
: .
: .
: 請問該怎麼抓到該處Loading後的DATA呢?
: 謝謝!
小弟不才,試著回答一下問題
他網頁是先寫好一個如你的圖右邊的架構,中間的價格等元素,則是當網頁loading的時候,用javascript執行一些程式碼,然後得到JSON的資料,最後取代loading的label
所以會抓到loading的字樣,下面是他網頁原始碼的一部份
function NationalFlashSpotPrice()
....略....
$.getJSON(NationalFlashSpotPriceURL+ 'Common/Json/HomePriceOpt.aspx?Source=Flash_Spot&rnd='+ Math.floor(Math.random() * 99999999999),
....略....
不好意思排版排的有點奇怪。
http://www.dramexchange.com/Common/Json/HomePriceOpt.aspx?Source=Dram_Spot&rnd=23
如果把網址打上去最後面rnd隨便打個數字,應該能抓到一些JSON的資料
JSON的資料python可以利用import json 來讀取(類似dict)
不知道這樣有沒有解決您的問題??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.228.127
※ 編輯: localhostphp 來自: 220.135.228.127 (08/24 16:33)
→ localhostphp:還有如果要大量抓資料的話,千萬不要FOR下去跑,會 08/24 20:22
→ localhostphp:被當成攻擊... 08/24 20:22
推 Thisisnotptt:感謝大大,請問不用for的話 有辦法可以避免被認認出 08/25 00:53
→ Thisisnotptt:是機器人嗎? 08/25 00:53
→ Thisisnotptt:不知道換不同代理可不可以蒙混過去? 08/25 00:54
→ Rhinocero:for迴圈裡面加sleep ? 08/25 03:12
→ localhostphp:加點延遲下去吧! 08/25 13:46
推 grazioso320:請問一般延遲都加多久呢? 半秒,1秒? 被當成攻擊真可怕 08/28 19:57
→ xatier:表現的像"人的行為" 就好 09/01 12:24