知识图谱搭建 学习笔记(四):数据获取
优采云 发布时间: 2022-05-27 18:33知识图谱搭建 学习笔记(四):数据获取
前面我们学了neo4j 数据库的基础操作语言,以及Python 链接 neo4j!这表示Python后端从neo4j 数据库提数这条通道已经打通。接下来我们真正的可以开始搭建知识图谱了!
一般来说搭建知识图谱有两种方式,一种是自顶而下,另一种是自底向上。
类似于金字塔结构!大部分知识图谱的构建都是自底向上进行搭建的。
数据获取是建立知识图谱的第一步。目前,知识图谱数据源按来源渠道的不同可分为两种:一种是业务本身的数据,这部分数据通常包含在行业内部数据库表并以结构化的方式存储,是一种非公开或半公开的数据;另一种是网络上公开、抓取的数据,这些数据通常是以网页的形式存在,是非结构化的数据。
按数据结构的不同,可分为三种:结构化数据、半结构化数据和非结构化数据,根据不同的数据类型,我们采用不同的方法进行处理。貌似说得有点复杂了,详细的也可以去百度搜索 看看吧!现在就开始正题吧!
对于数据获取,自然是要用到爬虫了,咱们就可以在一些开源的知识信息上获取到数据!简单地说下爬虫怎么获取数据!
以Python语言为列,爬虫的两个灵魂:
一个是xpath规则、css选择器;另一个是网页解析库,一般就是bs(BeautifulSoup)、lxml。
eg:
以百度搜索结果为例子:
粮食
搜索结果如下:
然后对结果进行提取,打开f12,使用xpath定位导数据,用lxml中的etree进行解析
r = response.text html = etree.HTML(r, etree.HTMLParser()) r1 = html.xpath('//h3') r2 = html.xpath('//*[@class="c-abstract"]') r3 = html.xpath('//*[@class="t"]/a/@href')
紧接着利用循环保存数据
for i in range(10): r11 = r1[i].xpath('string(.)') r22 = r2[i].xpath('string(.)') r33 = r3[i] with open('ok.txt', 'a', encoding='utf-8') as c: c.write(json.dumps(r11,ensure_ascii=False) + '\n') c.write(json.dumps(r22, ensure_ascii=False) + '\n') c.write(json.dumps(r33, ensure_ascii=False) + '\n') print(r11, end='\n') print('------------------------') print(r22, end='\n') print(r33)
最后运行,看运行结果:
保存的文件内容如下:
这样的话现在咱们数据也获取到了,处理完之后,就可以进行下一步知识图谱的搭建了!