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

想用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

        最新下載
        更多>
        網站特效
        網站源碼
        網站素材
        前端模板
        關於我們 免責聲明 Sitemap
        PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!