Heim > Fragen und Antworten > Hauptteil
Wenn Sie Python für den quantitativen Aktienhandel verwenden möchten, besteht der erste Schritt darin, die historischen Daten der Aktie abzurufen. Besuchen Sie die Webseite http://data.eastmoney.com/sto... Nachdem Sie den Quellcode der Webseite geöffnet haben, können Sie die Daten in der Tabelle nicht sehen. Es wird gesagt, dass sie mithilfe der Ajax-Technologie geladen werden. Ich habe im Internet gesehen, dass Selenium und PhantomJS verwendet werden können, um diese dynamischen Webinhalte abzurufen, aber ich weiß nicht, wie ich den vollständigen Quellcode erhalten kann. Bitte geben Sie Ratschläge von Experten
我想大声告诉你2017-05-18 11:03:14
事实上,我刚才试了一下,页面不是用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
给我你的怀抱2017-05-18 11:03:14
用这个组合 好处是简单暴力,坏处是效率较低。
相当于打开一个你看不到的浏览器加载页面,再把运算好的结果读取。
新人学爬虫的话 推荐 python网络数据采集 这本动物书。
你需要的说明在采集动态页面那章。
这书很薄 很实用。
巴扎黑2017-05-18 11:03:14
我对js和json都不太了解,刚刚爬虫入门。经过你的提示,我再查看了一下源码,发现在defjson里面有这些数据,不明白是怎样把json里的数据显示到tbody里面的。我用pandas的read_html可以抓到这些数据,但是最后两列会丢失。看来我得先去看看js和json