Python如何利用Selenium或者PhantomJS爬取動態網頁內容
問題描述
想用python做股票量化交易,第一步就是獲取股票的歷史數據。訪問http://data.eastmoney.com/sto...網頁,將網頁源碼打開后看不見表格中的數據,據說是利用ajax技術加載的。在網上看見可以利用selenium和phantomJS來獲取這些動態網頁內容,但是不知道如何獲取完整源碼。請高手指點迷津
問題解答
回答1:事實上,我剛才試了一下,頁面不是用xhr加載的,在頁面的源代碼中已經有了,然后調用了一個類把數據加載為一個table。比如,首頁的數據:
然后,提取就直接使用re提取就可以了,得到文本以后json解析就好了。先寫到這里。+++++++++++++++++++++++++++++++++++++++++
然后,就是這個網站不使用xhr加載數據而是使用的js來加載json數據,動態解析來顯示。具體分析需要用到js的知識,如果你了解也可以自己嘗試解析。
我嘗試了一下。
from urllib.parse import quoteimport timeimport requestsurl = 'http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=FD&sty=TSTC&st={sortType}&sr={sortRule}&p={page}&ps={pageSize}&js=var {jsname}=(x){param}'params = { 'sortType': 1, 'sortRule': 1, 'page': 2, 'pageSize': 50, 'jsname': 'Aafdafgq', # 這里使用的是隨機字符串,8位 'param': '&mkt=0&rt='}params['param'] += str(int(time.time()/30)) # 當前時間url = url.format(**params)url = quote(url, safe=':=/?&()')req = requests.get(url)req.text
用這個組合 好處是簡單暴力,壞處是效率較低。相當于打開一個你看不到的瀏覽器加載頁面,再把運算好的結果讀取。新人學爬蟲的話 推薦 python網絡數據采集 這本動物書。你需要的說明在采集動態頁面那章。這書很薄 很實用。
回答3:我對js和json都不太了解,剛剛爬蟲入門。經過你的提示,我再查看了一下源碼,發現在defjson里面有這些數據,不明白是怎樣把json里的數據顯示到tbody里面的。我用pandas的read_html可以抓到這些數據,但是最后兩列會丟失??磥砦业孟热タ纯磈s和json
相關文章:
1. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風格檢查怎么辦。。。2. javascript - [js]為什么畫布里不出現圖片呢?在線等3. python - 如何判斷爬蟲已經成功登陸?4. html - vue項目中用到了elementUI問題5. html5 - 有可以一次性把所有 css外部樣式轉為html標簽內style=" "的方法嗎?6. javascript - 如何將一個div始終固定在某個位置;無論屏幕和分辨率怎么變化;div位置始終不變7. javascript - 原生canvas中如何獲取到觸摸事件的canvas內坐標?8. javascript - 有什么比較好的網頁版shell前端組件?9. javascript - 這不是對象字面量函數嗎?為什么要new初始化?10. javascript - 求解答:實例對象調用constructor,此時constructor內的this的指向?
