Python如何利用Selenium或PhantomJS爬取動態網頁內容
黄舟
黄舟 2017-05-18 11:01:14
0
3
971

想用python做股票量化交易,第一步就是取得股票的歷史數據。造訪http://data.eastmoney.com/sto...網頁,將網頁原始碼開啟後看不見表格中的數據,據說是利用ajax技術載入的。在網路上看到可以利用selenium和phantomJS來取得這些動態網頁內容,但卻不知道如何取得完整原始碼。請高手指點迷津

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回覆(3)
我想大声告诉你

事實上,我剛剛試了一下,頁面不是用xhr加載的,在頁面的源代碼中已經有了,然後調用了一個類把數據加載為一個table。
比如,首頁的數據:

然後,提取就直接使用re提取就可以了,得到文本以後json解析就好了。
先寫到這裡。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

然後,就是這個網站不使用xhr載入數據而是使用的js來載入json數據,動態解析來顯示。具體分析需要用到js的知識,如果你了解也可以自己嘗試解析。

我嘗試了一下。


from urllib.parse import quote
import time
import requests

url = "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網路資料收集 這本動物書。
你需要的說明在採集動態頁面那章。
這書很薄 很實用。

巴扎黑

我對js和json都不太了解,剛剛爬蟲入門。經過你的提示,我再查看了一下原始碼,發現在defjson裡面有這些數據,不明白是怎麼把json裡的數據顯示到tbody裡面的。我用pandas的read_html可以抓到這些數據,但是最後兩列會遺失。看來我得先去看看js和json

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板