84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
想用python做股票量化交易,第一步就是取得股票的歷史數據。造訪http://data.eastmoney.com/sto...網頁,將網頁原始碼開啟後看不見表格中的數據,據說是利用ajax技術載入的。在網路上看到可以利用selenium和phantomJS來取得這些動態網頁內容,但卻不知道如何取得完整原始碼。請高手指點迷津
人生最曼妙的风景,竟是内心的淡定与从容!
事實上,我剛剛試了一下,頁面不是用xhr加載的,在頁面的源代碼中已經有了,然後調用了一個類把數據加載為一個table。比如,首頁的數據:
然後,提取就直接使用re提取就可以了,得到文本以後json解析就好了。先寫到這裡。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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
事實上,我剛剛試了一下,頁面不是用xhr加載的,在頁面的源代碼中已經有了,然後調用了一個類把數據加載為一個table。
比如,首頁的數據:
然後,提取就直接使用re提取就可以了,得到文本以後json解析就好了。
然後,就是這個網站不使用xhr載入數據而是使用的js來載入json數據,動態解析來顯示。具體分析需要用到js的知識,如果你了解也可以自己嘗試解析。 我嘗試了一下。先寫到這裡。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
用這個組合 好處是簡單暴力,壞處是效率較低。
相當於打開一個你看不到的瀏覽器載入頁面,再把運算好的結果讀取。
新進蟲的話 推薦 python網路資料收集 這本動物書。
你需要的說明在採集動態頁面那章。
這書很薄 很實用。
我對js和json都不太了解,剛剛爬蟲入門。經過你的提示,我再查看了一下原始碼,發現在defjson裡面有這些數據,不明白是怎麼把json裡的數據顯示到tbody裡面的。我用pandas的read_html可以抓到這些數據,但是最後兩列會遺失。看來我得先去看看js和json