网页抓取港股实时行情(东方财富网股票行情()数据储存在json对象中)
优采云 发布时间: 2021-10-17 19:09网页抓取港股实时行情(东方财富网股票行情()数据储存在json对象中)
介绍爬虫内容
爬虫的第一步是获取数据的存储地址。因此,在爬取股市数据之前,第一步是解析网页,找到数据的url。
东方财富网股票报价界面如图:
此页面的链接是:
市场中心:国内最快最全面的股票、基金、期货、美股、港股、外汇、黄金、债券市场体系
在浏览器地址栏输入这个链接可以正常访问,但是通过requests库请求获取不到股票行情数据。右击任意一只股票查看源码,发现网站将数据存储在json对象中:
通过搜索某只股票的名称,找到对应的地址,所有的股票信息都存储在这个链接指向的对象中:
网址:
:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6 ,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_
粘贴到地址栏中,我们发现返回了20条股票信息。检查 url 的组成。有一句“pz=20”。猜猜这意味着返回20条信息。如果改成20000,会返回更多的数据吗??
经过尝试,果然返回了3912个*敏*感*词*(沪深A股总数)。至此,我们就获得了数据的存储地址。json数据可以通过requests库直接返回。这真的很方便。.
抓取数据和流程
导入请求,re,json
从 bs4 导入 BeautifulSoup
将熊猫导入为 pd
#指定连接
url = r':0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4 ,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f11 =94'
#定义请求头
headers = {'UserAgent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36'}
#检索数据
html=requests.get(url,headers = headers)
查看返回的信息,我们发现我们需要的数据是存放在“diff”列表中,或者是json数据的第6个元素中,但是与clean json数据不同的是,前面多了42个字符,而且更多在后面。2个字符,所以需要删除多余的字符,否则json将无法解析。
#提取json数据
jsons = html.text[42:-2]
#将str格式的正确格式转换为json格式
text_json = json.loads(jsons)
#使用pandas存储数据到excel
pd.DataFrame((text_json['data']['diff'])).to_excel(r'Pathabc.xlsx')
查看结果:
初步结果如上图所示。标题不直观,需要重新定义。因此,通过查看东菜网站中“Name”的源码,可以找到每个“fxx”的含义,通过renew 定义请求链接,我们可以控制返回的数据类型,即, 删除不需要的列。
表头行数据的存储地址:
按照json格式解析后,可以得到:
上图是标题行代码(fxx)的含义。根据此表,您可以自定义请求链接,并根据您的需要返回库存信息。
最后,经过整理,我们得到如图所示的Excel:
至此,东财网站每日股票交易数据的抓取过程已经完成。