利用python中requests获取动态股市指数行情数据
这里数据来源为东方财富网,代码如下:
import requests
try:
#主要是获取user-agent,伪装成浏览器,其它的可要,可不要
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
}
#url = "http://quote.eastmoney.com/center/gridlist.html#global_asia"
##由于之前直接requests请求上述网址,发现元素中无值,因此通过查看浏览器中Network中js获得url
url = "http://nufm.dfcfw.com/EM_Finance2014NumericApplication/JS.aspx?cb=jQuery11240057810984738995375_1535419901682&type=CT&token=4f1862fc3b5e77c150a2b985b12db0fd&sty=FCRH&js=(%7Bdata%3A%5B(x)%5D%2CrecordsFiltered%3A(tot)%7D)&cmd=R.0000011%2C3990012%2C0003001%2C3990062%2C3990052%2CHSI5%2CHSCEI5%2CHSCCI5%7C_UI_MAP_ASIA&st=y&p=1&ps=20&_=1535419901688" #p=1表示第一页,ps=20设置请求的一页有20条记录
web_data = requests.get(url, headers=header) #Request有三个参数(url,data,headers),如果有使用data就是post请求了,没有就是get请求。这里我没有data,所以我就指定headers=header,不然header就会被当成data了。
web_data.encoding = "utf-8"
data = web_data.text
print(data)
#以下操作是要是对获取到的数据做一些处理(截取所需字符串,变为列表后输出易于观察)
#截取字符串中[]以内的数据
pos_start = data.find("[")
pos_end = data.find("]")
print(pos_start, pos_end)
data = data[pos_start+1:pos_end]
#字符串以","这三个字符隔开,且以列表保存
data = data.split('\",\"')
#除掉列表中首尾位置字符串中的双引号
data[0] = data[0].replace("\"", "")
data[-1] = data[-1].replace("\"", "")
#print(data)
caption = ["序号", "简称", "名称", "最新价", "涨跌额", "涨跌幅", "更新时间", "未知", "开盘", "最高", "最低", "昨收", "振幅"]
print(caption) #字段说明
#data.insert(0,caption)
for one in data:
print(one.replace(",", ", ")) #间隔拉开一点
except KeyboardInterrupt:
pass
结果如下图: