气质数据读取、分析、与物质的属性快速统计汇总并翻译
1. 目的
针对平台气相数据的快速读取并将关键信息提取与统计分析计算,利用百度翻译和通过特定网站整理出当前化学物质的性质说明。适用于批量处理数据例如大于5个以上数据。同时要求结果中英和化学物质属性同时汇总到统一的表格中。本过程主要基于matlab和python进行实现,同时针对学院仪器数据而设计程序过程。
2.工作流
1. 测定气相数据
2. 批量提取测定结果中的关键信息
3. 将结果中的对应化学物质的属性自动批量下载保存
4. 统计分析数据中差异与定量分析
3. 数据结果分析流程
-
输入数据类型 气相测定结果的xls表格
-
将输入数据文件转化为txt并调用matlab绘制文字云快速确定物质分布
atlab进行计算 -
将计算结果粘贴到表格中
-
基于python打开特定网站调用表格中的Cas号查询化学品的信息
-
统计分析气相结果,聚类与分类差异
%% 气质数据读取与翻译代码
clc
clear
for cc_xxx=1:1
filename='jiupei-water_report20210611.txt';
hj=readtable(filename);
% hj(1:184,:) = [];
p=0;
for i=1:size(hj,1)
a_lingshi=char(hj.Var2(i));
if size(hj.Var1(i),1)~=0 && size(a_lingshi,2)~=0 && isnan(hj.Var2(i))~=1 %
p=1+p;
hj_p(p,:)=hj(i,:);
end
end
hj_p = removevars(hj_p, 'Var8');
hj_p = removevars(hj_p, 'Var9');
hj_p = removevars(hj_p, 'Var11');
hj_p = removevars(hj_p, 'Var13');
hj_p = removevars(hj_p, 'Var5');
p=0;
for j=1:size(hj_p,1)
if isempty((hj_p.Var1(j)))~=1
p=1+p;
hj_p_p(p,:)=hj_p(j,:);
end
end
for i=1:size(hj_p_p,1)
% cx(i,1)=str2num(hj_p_p.Var14(i));
cx(i,1)=hj_p_p.Var14(i);
try
pause(1)
disp('请等待')
cxx{i,1}=trastion_matlab(hj_p_p.Var7{i},'zh');
catch
pause(3)
disp('请等待')
cxx{i,1}=trastion_matlab(hj_p_p.Var7{i},'zh');
end
% cx(i,2)=str2num(hj_p_p.Var14{i});
end
wordcloud(hj_p_p.Var7,cx);
savefig(gcf,strcat(filename,'结果图片.fig'))
save(strcat(filename,'xx.mat'),'cxx','cx','hj_p_p','hj_p')
figure
wordcloud(cxx,cx);
savefig(gcf,strcat(filename,'结果数据中文保存.fig'))
cx=cellfun(@(x)str2double(x),cx);%读取的数据保存为数值类型
clear cxx cx hj_p_p hj_p
end
% annotation('textbox',...
% [0.269452380952381 0.838888888888889 0.0763809523809524 0.0571428571428573],...
% 'String',{'f'},...
% 'FitBoxToText','off');
%q = clipboard("paste");%閫氳繃鍓垏鏉胯幏鍙栭渶瑕佺炕璇戠殑鍘熸枃
%涓汉寮?鍙戣?匢D涓庡瘑閽?,鍒囧嬁鍏紑锛?
function runst_1=trastion_matlab(q,toLang)
% q='';%输入原文
appid = ''; %请输入自己的开发者ID
secretKey = ''; %此处为密
fromLang = 'auto'; %原文语种,默认自动识别
% toLang = 'zh'; %译文语种,默认选择中文,从以下列表选择所需翻译的译文语种
%常用语言对照
Lang =["zh","en","jp","de","fra","kor","yue","cht","wyw",...
"ru","th","pt","el","it","bul","fin","slo","ara",...
"nl","est","cs","swe","vie","spa","rom","pl","dan","hu"]; %支持的常用语种
LangZH = ["中文","英语","日语","德语","法语","韩语","粤语","繁体中文",...
"文言文","俄语","泰语","葡萄牙语","希腊语","意大利语","保加利亚语",...
"芬兰语","斯洛文尼亚语","阿拉伯语","荷兰语","爱沙尼亚语","捷克语",...
"瑞典语","越南语","西班牙语","罗马尼亚语","波兰语","丹麦语","匈牙利语"]; %语种中文名
myurl = 'https://fanyi-api.baidu.com/api/trans/vip/translate';
salt = randi([32768, 65536]);
sign = [appid, q, num2str(salt), secretKey];
sign = lower(mlreportgen.utils.hash(sign));
myurl = [myurl ,'?appid=' ,appid ,'&q=' ,urlencode(q) ,'&from=', fromLang,...
'&to=' ,toLang ,'&salt=' ,num2str(salt),'&sign=' ,char(sign)];
data=webread(myurl); %请求参数并输出
translation=data.trans_result;
runst_1=translation.dst;
% clipboard('copy',translation.dst) %将翻译内容复制到剪切板
网站批量上传实例
- 参考博客【1】【2】
- cas化学信息查询网站
- 案例一
from selenium import webdriver
from time import sleep
#1.创建Chrome浏览器对象,这会在电脑上在打开一个浏览器窗口
browser = webdriver.Firefox()
#2.通过浏览器向服务器发送URL请求
browser.get("https://cs.wellesley.edu/~btjaden/TargetRNA2/index.html")
#sleep(1)
#3.刷新浏览器
#browser.refresh()
#4.设置浏览器的大小
#browser.set_window_size(1400,800)
# #5.设置链接内容
browser.find_element_by_xpath('//*[@id="form1"]/textarea').send_keys(">RyhB\nGCGATCAGGAAGACCCTCGCGGAGAACCTGAAAGCACGACATTGCTCACATTGCTTCCAGTATTACTTAGCCAGCCGGGTGCTGGCTTTT")
browser.find_element_by_xpath('//*[@id="form1"]/input[1]').send_keys("Escherichia coli str. K-12 substr. MG1655")
browser.find_element_by_xpath('//*[@id="submitsmall"]').click()
#
sleep(1)
# element=browser.find_element_by_link_text("“下团组”时间")
# element.click()
a=browser.get_attribute_by_xpath('/html/body/div[2]/center[2]/table/tbody/tr[2]/td[2]/a');
print(a)
- 案例二
from selenium import webdriver
from time import sleep
import urllib
import urllib.request
#1.创建Chrome浏览器对象,这会在电脑上在打开一个浏览器窗口
browser = webdriver.Firefox()
#2.通过浏览器向服务器发送URL请求
browser.get("https://www.chemsrc.com/casindex/")
#sleep(1)
#3.刷新浏览器
#browser.refresh()
#4.设置浏览器的大小
#browser.set_window_size(1400,800)
# #5.设置链接内容
browser.find_element_by_xpath('//*[@id="chemSearch"]').send_keys("75-07-0") #输入cas号
browser.find_element_by_xpath('//*[@id="scrollbar"]/div/span/button/span').click()#点击搜索
#
sleep(1)
# element=browser.find_element_by_link_text("“下团组”时间")
# element.click()
#获取界面需要数据
#获取熔点信息
a=browser.find_element_by_xpath('/html/body/div[4]/div[1]/div[1]/table[1]/tbody/tr[3]/td[2]').text
print(a)
#
# # 抓取页面方法,调用该方法返回抓取到数据
# def read_pageHtml(url):
# file = urllib.request.urlopen(url)
# data = file.read()
# return data
#
#
# # 传入需要抓取页面的链接 并调用抓取页面方法获得页面数据
# url = "https://www.baidu.com/"
# data = read_pageHtml(url)
# # 控制台打印数据
# print(data)
#
#
# # 将数据生成txt文件方法 传入保存文件路径 storagePath 以及文件数据 data
# def storageToLocalFiles(storagePath, data):
# fhandle = open(storagePath, "wb")
# fhandle.write(data)
# fhandle.close()
#
#
# # 调用文件数据保存方法
# storagePath = "C:/Users/Pathliu/Desktop/pyweb.txt"
# storageToLocalFiles(storagePath, data)
- 进入网站
- 自动键入cas号 75-07-0 (乙醛) 并获得返回的物质信息
- 将获取的物质信息打印输出
本地上传文件处理后下载保存本地并从命名
from selenium import webdriver
from time import sleep
import os
#1.创建Chrome浏览器对象,这会在电脑上在打开一个浏览器窗口
browser = webdriver.Firefox()
#2.通过浏览器向服务器发送URL请求
browser.get("https://www.aconvert.com/cn/pdf/xps-to-pdf/")
#sleep(1)
def file_name(file_dir):
L = []
for root, dirs, files in os.walk(file_dir):
for file in files:
# 读取pdb文件
if os.path.splitext(file)[1] == '.xps':
L.append(os.path.join(root , file))
return L
# 读取本地文件夹下pdb文件(../gg/)
file_name_pdb=file_name('D:\\新建文件夹\\黄\\')
## 利用pymol处理本地pdb
apu=[]
apup=[]
for i in range(file_name_pdb.__len__()):
#3.刷新浏览器
#browser.refresh
#4.设置浏览器的大小
#browser.set_window_size(1400,800)
# #5.设置链接内容
filename_p = file_name_pdb[i]
#'D:\\新建文件夹\\黄\\'+
browser.find_element_by_xpath('//*[@id="file"]').send_keys(filename_p)
sleep(1)
browser.find_element_by_xpath('//*[@id="targetformat"]').send_keys('xls')
browser.find_element_by_xpath('//*[@id="conversionform"]/div[3]/input[1]').click()
browser.implicitly_wait(60)
sleep(1)
browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a').click()
browser.implicitly_wait(60)
px=browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a')
px_a = browser.find_element_by_xpath(
'/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[3]')
filename='C:\\Users\\Administrator\\Downloads\\'+px.text
filePath = filename
print(px.text)
print(px_a.text)
apu.append(px.text)
apup.append(px_a.text)
browser.implicitly_wait(60)
#browser.implicitly_wait(60)
#os.rename('C:\\Users\\Administrator\\Downloads\\' +px.text, 'C:\\Users\\Administrator\\Downloads\\' + px_a.text+'.xls')
px=browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a')
a=browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[4]/a[2]/i').click()
#a=browser.find_element_by_xpath('//*[@id="tr1"]/td[2]').click()
#a=browser.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[1]/div[2]/table/tbody/tr[3]/td[2]/a').click()
#a=browser.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[1]/div[2]/table/tbody/tr[3]/td[1]').click()
#'/html/body/div[3]/div[2]/div/div[1]/div[2]/table/tbody/tr[3]/td[1]
#browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a').click()
#/html/body/div[3]/div[3]/div[2]/div[1]/div[1]/form/div[3]/input[1]
# element=browser.find_element_by_link_text("“下团组”时间")
# element.click()
#获取界面需要数据
#熔点
# a=browser.find_element_by_xpath('/html/body/div[4]/div[1]/div[1]/table[1]/tbody/tr[3]/td[2]').text
#print(a)
#
# # 抓取页面方法,调用该方法返回抓取到数据
# def read_pageHtml(url):
# file = urllib.request.urlopen(url)
# data = file.read()# return data
#
#
# # 传入需要抓取页面的链接 并调用抓取页面方法获得页面数据
# url = "https://www.baidu.com/"
# data = read_pageHtml(url)
# # 控制台打印数据
# print(data)
#
#
# # 将数据生成txt文件方法 传入保存文件路径 storagePath 以及文件数据 data
# def storageToLocalFiles(storagePath, data):
# fhandle = open(storagePath, "wb")
# fhandle.write(data)
# fhandle.close()
#
#
# # 调用文件数据保存方法
# storagePath = "C:/Users/Pathliu/Desktop/pyweb.txt"
# storageToLocalFiles(storagePath, data)
# browser.find_element_by_xpath().click()
# browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a')
# /html/body/div[3]/div[2]/div/div[1]/div[2]/table/tbody/tr[6]/td[2]/form/div/input
from selenium import webdriver
from time import sleep
import os
#1.创建Chrome浏览器对象,这会在电脑上在打开一个浏览器窗口
browser = webdriver.Firefox()
#2.通过浏览器向服务器发送URL请求
browser.get("https://www.aconvert.com/cn/pdf/xps-to-pdf/")
#sleep(1)
def file_name(file_dir):
L = []
for root, dirs, files in os.walk(file_dir):
for file in files:
# 读取pdb文件
if os.path.splitext(file)[1] == '.xps':
L.append(os.path.join(root , file))
return L
# 读取本地文件夹下pdb文件(../gg/)
file_name_pdb=file_name('D:\\新建文件夹\\重复跑')
## 利用pymol处理本地pdb
apu=[]
apup=[]
for i in range(file_name_pdb.__len__()):
#3.刷新浏览器
#browser.refresh
#4.设置浏览器的大小
#browser.set_window_size(1400,800)
try:
# #5.设置链接内容
filename_p = file_name_pdb[i]
#'D:\\新建文件夹\\黄\\'+
browser.implicitly_wait(60)
browser.find_element_by_xpath('//*[@id="file"]').send_keys(filename_p)
browser.find_element_by_xpath('//*[@id="targetformat"]').send_keys('xls')
browser.find_element_by_xpath('//*[@id="conversionform"]/div[3]/input[1]').click()
browser.implicitly_wait(60)
browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a').click()
browser.implicitly_wait(60)
px=browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a')
px_a = browser.find_element_by_xpath(
'/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[3]')
filename='C:\\Users\\Administrator\\Downloads\\'+px.text
filePath = filename
if px.text=='Conversion Failed':
browser.close()
browser = webdriver.Firefox()
# 2.通过浏览器向服务器发送URL请求
browser.get("https://www.aconvert.com/cn/pdf/xps-to-pdf/")
continue
print(px.text)
print(px_a.text)
apu.append(px.text)
apup.append(px_a.text)
browser.implicitly_wait(60)
#browser.implicitly_wait(60)
#os.rename('C:\\Users\\Administrator\\Downloads\\' +px.text, 'C:\\Users\\Administrator\\Downloads\\' + px_a.text+'.xls')
px=browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a')
a=browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[4]/a[2]/i').click()
print('p')
continue
except:
browser = webdriver.Firefox()
# 2.通过浏览器向服务器发送URL请求
browser.get("https://www.aconvert.com/cn/pdf/xps-to-pdf/")
continue
for i in range(apu.__len__()):
try:
os.rename('C:\\Users\\Administrator\\Downloads\\' + apu[i],
'C:\\Users\\Administrator\\Downloads\\' + apup[i] + '.xls')
except:
continue
#a=browser.find_element_by_xpath('//*[@id="tr1"]/td[2]').click()
#a=browser.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[1]/div[2]/table/tbody/tr[3]/td[2]/a').click()
#a=browser.find_element_by_xpath('/html/body/div[3]/div[2]/div/div[1]/div[2]/table/tbody/tr[3]/td[1]').click()
#'/html/body/div[3]/div[2]/div/div[1]/div[2]/table/tbody/tr[3]/td[1]
#browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a').click()
#/html/body/div[3]/div[3]/div[2]/div[1]/div[1]/form/div[3]/input[1]
# element=browser.find_element_by_link_text("“下团组”时间")
# element.click()
#获取界面需要数据
#熔点
# a=browser.find_element_by_xpath('/html/body/div[4]/div[1]/div[1]/table[1]/tbody/tr[3]/td[2]').text
#print(a)
#
# # 抓取页面方法,调用该方法返回抓取到数据
# def read_pageHtml(url):
# file = urllib.request.urlopen(url)
# data = file.read()# return data
#
#
# # 传入需要抓取页面的链接 并调用抓取页面方法获得页面数据
# url = "https://www.baidu.com/"
# data = read_pageHtml(url)
# # 控制台打印数据
# print(data)
#
#
# # 将数据生成txt文件方法 传入保存文件路径 storagePath 以及文件数据 data
# def storageToLocalFiles(storagePath, data):
# fhandle = open(storagePath, "wb")
# fhandle.write(data)
# fhandle.close()
#
#
# # 调用文件数据保存方法
# storagePath = "C:/Users/Pathliu/Desktop/pyweb.txt"
# storageToLocalFiles(storagePath, data)
# browser.find_element_by_xpath().click()
# browser.find_element_by_xpath('/html/body/div[3]/div[3]/div[2]/div[1]/div[2]/div[1]/div/table/tbody/tr/td[2]/a')
# /html/body/div[3]/div[2]/div/div[1]/div[2]/table/tbody/tr[6]/td[2]/form/div/input