爬取动态网页东方财富

这个东方财富挺难爬的,我一开始用的selenium,但是太慢了,虽然这个网站友好之处,就是没有封过我的ip,但是加载很慢,直接在页面上是拿不到他的数据的,所以要对他的网页进行分析。我一开始以为动态网页只能通过selenium这样的东西去爬,后来才发现,其实都能用requests去爬,只要找到了数据源的网址,就可以直接去拿。这个就是我找到的关于http://so.eastmoney.com/web/s?keyword=000850&pageindex=1页面上,综合评分这些数据的网址,真的是废了很大的劲才找到。因为他这个是最后才加载出来,所以先是用network去看最后几个,好像是找着找着又没找到,然后就去看调试器了。。。在这里插入图片描述
然后就一直翻,就找到了这个东西,右键单击就能复制了源地址。而且这个网址就只要改这个股票的代码,其他的不用动。然后就获取到了这个a=response.content。

http://gwapi.eastmoney.com/agent/1258/stockcomment/api/so/002875.json?appid=1466&tk=28228DE7FA07D013677756DD94686DEA&cb=jQuery11240592770126391372_1617018500625&_=1617018500652

现在的a就是这个玩意,因为没有解码
b’\xef\xbb\xbfjQuery11240592770126391372_1617018500625({“Scode”:“000850.SZ”,“ApiResults”:{“zj”:{“Overall”:[{“UpdateTime”:“2021/3/29 16:30:00”,“TotalScore”:“62.64”,“TotalScoreCHG”:“1.71”,“LeadPre”:“42.2794986994561”,“RisePro”:“48.717750058108”,“MsgCount”:“1”,“CapitalScore”:“63.92”,“D1”:“4.40099769911518”,“ValueScore”:“57.03”,“MarketScoreCHG”:"-2.24",“Status”:“1”,“Comment”:"\xe8\xbf\x91\xe6\x97\xa5\xe6\xb6\x88\xe6\x81\xaf\xe9\x9d\xa2\xe4\xb8\x80\xe8\x88\xac\xef\xbc\x8c\xe4\xb8\xbb\xe5\x8a\x9b\xe8\xb5\x84\xe9\x87\x91\xe6\x97\xa0\xe6\x98\x8e\xe6\x98\xbe\xe8\xbf\xb9\xe8\xb1\xa1\xef\xbc\x8c\xe7\x9f\xad\xe6\x9c\x9f\xe5\x91\x88\xe7\x8e\xb0\xe9\x9c\x87\xe8\x8d\xa1\xe8\xb6\x8b\xe5\x8a\xbf\xe3\x80\x82\xe5\x85\xac\xe5\x8f\xb8\xe8\xb4\xa8\xe5\x9c\xb0\xe8\xbe\x83\xe5\xb7\xae\xef\xbc\x8c\xe5\xb8\x82\xe5\x9c\xba\xe5\x85\xb3\xe6\xb3\xa8\xe6\x84\x8f\xe6\x84\xbf\xe6\x97\xa0\xe6\x98\x8e\xe6\x98\xbe\xe5\x8f\x98\xe5\x8c\x96\xe3\x80\x82"}]}},“HasError”:false,“UpdateTime”:“2021-03-29T20:56:17.653+08:00”})’

解码a.decode(‘utf-8’)就是这个内容
jQuery11240592770126391372_1617018500625({“Scode”:“000850.SZ”,“ApiResults”:{“zj”:{“Overall”:[{“UpdateTime”:“2021/3/29 16:30:00”,“TotalScore”:“62.64”,“TotalScoreCHG”:“1.71”,“LeadPre”:“42.2794986994561”,“RisePro”:“48.717750058108”,“MsgCount”:“1”,“CapitalScore”:“63.92”,“D1”:“4.40099769911518”,“ValueScore”:“57.03”,“MarketScoreCHG”:"-2.24",“Status”:“1”,“Comment”:“近日消息面一般,主力资金无明显迹象,短期呈现震荡趋势。公司质地较差,市场关注意愿无明显变化。”}]}},“HasError”:false,“UpdateTime”:“2021-03-29T20:56:17.653+08:00”})

然后我试过用正则表达式,很麻烦,好反人类啊。所以先要把括号和括号外面的去掉,把里面的json字符串转换为字典,再去取出数据。

a=str(a.decode('utf-8'))
a=a.split('(')[1].split(')')[0]
b=json.loads(a)
print(b)
print(b['Scode'])
print(b['ApiResults']['zj']['Overall'][0]['UpdateTime'])
print(b['ApiResults']['zj']['Overall'][0]['TotalScore'])
print(b['ApiResults']['zj']['Overall'][0]['TotalScoreCHG'])
print(b['ApiResults']['zj']['Overall'][0]['LeadPre'])
print(b['ApiResults']['zj']['Overall'][0]['RisePro'])
print(b['ApiResults']['zj']['Overall'][0]['MsgCount'])
print(b['ApiResults']['zj']['Overall'][0]['CapitalScore'])
print(b['ApiResults']['zj']['Overall'][0]['ValueScore'])
print(b['ApiResults']['zj']['Overall'][0]['MarketScoreCHG'])
print(b['ApiResults']['zj']['Overall'][0]['Status'])
print(b['ApiResults']['zj']['Overall'][0]['Comment'])
zonghepingfen=b['ApiResults']['zj']['Overall'][0]['TotalScore']
jinribiaoxian=b['ApiResults']['zj']['Overall'][0]['TotalScoreCHG']
dabaileduoshaogupiao=b['ApiResults']['zj']['Overall'][0]['LeadPre']
cirishangzhanggailv=b['ApiResults']['zj']['Overall'][0]['RisePro']
xiaoximian=b['ApiResults']['zj']['Overall'][0]['Comment']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝不闻道,夕不可死

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值