从EChart中提取数据的小方法

从EChart中提取数据的小方法,第1张

目录

问题描述

1:爬虫

2:手动获取

问题描述

实验时,发现一个html的数据集,在浏览器(我用的Microsoft Edge)打开显示是EChart

数据被绘成了可视化图形

获取数据的方法

1:爬虫
# 网页解析,获取数据
from bs4 import BeautifulSoup  
# 正则表达式,进行文字匹配
import re  
import pandas as pd


#这段是正则表达式,一般需要结合不同网页源代码和需要提取内容的位置做改变
findbody = re.compile(r'"showSymbol": true,\n            "data":(.*?)]', re.S)
finditem = re.compile(r'"(.*?)"', re.S)

def main():
    #要爬取的文件
    baseurl = 'sys.html'  
    datalist = getData(baseurl)
    #存储数据
    saveData(datalist,savepath) 
 
#获取数据    
def getData(baseurl):
    datalist = []
    soup = BeautifulSoup(open(baseurl,encoding='utf-8'), "html.parser")
    soup = str(soup)
    data = []
    body = re.findall(findbody, soup)
    # 通过正则表达式查找自己需要的内容
    for i in range(0,len(body)):
        link = re.findall(finditem, body[i])  
        data.append(link)
        # print(data[0][1])
        # exit()
        datalist.append(data)
    return datalist

# 保存数据到表格
def saveData(datalist,savepath):
    将datalist里面的值一列一列地存入csv文件,不用xls的原因是每次只让存255列
    for k in range(len(datalist)):
        ngdata = pd.read_csv('data.csv')
        data = datalist[0][k]
        dtaa = []   
        for l in range(2507):
            dtaa.append(str(data[l]))
        #为新列加一个名字,就可以在原有的数据上加一个新列
        ngdata['new'+str(k)] = dtaa
        ngdata.to_csv('data.csv',index=False)

main()

运行结果如下:

  2:手动获取

点击浏览器右上角的三个点,选择更多工具,继续选择开发人员工具

 会出现以下界面:

慢慢往下拉就可以看见一大串数据了

 可以直接选中需要的行数,粘贴复制到一个txt文件中,此时的数据有引号,逗号

利用以下python代码将txt中每一行的数据提取出来放入excel中

import re
import pandas as pd
import openpyxl

data=[]
for line in open("1.txt","r"):
    pattern = re.compile('"(.*)"')
    value = pattern.findall(line)
    data.append(value)
data = pd.DataFrame(data)

writer = pd.ExcelWriter(r'1.xlsx')
data.to_excel(writer)
writer.save()
writer.close()

结果如下: 

 

 参考:

写入csv增加新列

不用xls的原因

爬虫代码参考

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/570288.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存