爬取术语创建术语库
需求:爬取专业术语,建立一个术语库。
最近需要用到百度api,其中百度翻译开发平台可以免费建立术语库(不像SDL必须得激活才能建立和使用术语库)。目前已有在线的计算机专业术语数据库,只需要将其爬取下来,即可建立并使用自己的术语库。
实现:一.爬虫
对网页的简单分析后发现,目标数据不在网页源码中,需要找对的URL:
右键检查→Network→XHR→刷新网页→在name里找到目标对应的URL
爬取网页所有的tables
输出表tables数量和tables,发现其中有一个表不能用
url = "https://api.aminer.cn/api/article/alias/ml_taxonomy"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
r = requests.get(url,headers=headers)#获得服务器响应
html_code = r.content.decode(r.encoding)#解码
tables = pd.read_html(html_code)
print("table数量:",len(tables))
print(tables)
修改爬取的表,仅保留目标数据
def change():
# 对表修改(将第0行变成我们的表头,并删除原来的第0行)
df1 = tables[i]
df1.columns = list(df1.iloc[0])
df1 = df1.drop([0], axis=0)
# 删除'相关学者', '相关论文'这两列
df1 = df1.drop(['相关学者', '相关论文'], axis=1)
# 重建索引
df1.reset_index(drop=True)
tables[i] = df1
print(i)
print(df1)
全部代码
import requests
from lxml import etree
import pandas as pd
url = "https://api.aminer.cn/api/article/alias/ml_taxonomy"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'}
r = requests.get(url,headers=headers)#获得服务器响应
html_code = r.content.decode(r.encoding)#解码
tables = pd.read_html(html_code)
print("table数量:",len(tables))
frames=[]
def change():
# 对表修改(将第0行变成我们的表头,并删除原来的第0行)
df1 = tables[i]
df1.columns = list(df1.iloc[0])
df1 = df1.drop([0], axis=0)
# 删除'相关学者', '相关论文'这两列
df1 = df1.drop(['相关学者', '相关论文'], axis=1)
# 重建索引
df1.reset_index(drop=True)
tables[i] = df1
print(i)
print(df1)
#df1.to_csv("std.csv", index=False)
#第19个表不可用,于是这么写
for i in range(19):
change()
for i in range(20,25):
change()
#将24个表合并
# frames = [tables[0], tables[1], tables[2],tables[3], tables[4], tables[5],tables[6], tables[7],
# tables[8], tables[9], tables[10], tables[11], tables[12], tables[13], tables[14], tables[15],
# tables[16], tables[17], tables[18], tables[20], tables[21], tables[22], tables[23], tables[24]]
# result = pd.concat(frames)
# print(result)
# result.to_csv("data.csv", index=False, encoding='utf_8_sig')
二.建立术语库
上一步获得.csv文件,另存为.txt文件,阅读百度翻译开发平台导入术语的要求
- 源语言和目标语言中间以三条竖线分隔。
这个简单,由于csv表格转txt文件后,术语与译文间以空格隔开。在记事本按住ctrl+h快捷键,将空格替换为三条竖线即可。
然后导入术语,导入失败,检查csv文件后发现(csv表格看的比txt文件更清晰)有几个术语译文为空,网站数据有几个术语没有译文导致。导入术语的格式要求比较严格,于是删掉问题行后重新生成txt导入。
该txt文件已上传至csdn
导入成功,但是译文均为乱码,原因未明,不过我测试后发现只导入该txt文件部分内容不会乱码,可能是数据过多导致的乱码,于是分两次导入,最终成功建立术语库。
既已览卷至此,何不品评一二: