天天看点

[python] lantern访问中文维基百科及selenium爬取维基百科语料

希望文章对你有所帮助,尤其是web爬虫初学者和nlp相关同学。当然你也能,懂的~

目录:

0 前言

1 lantern访问中文维基百科

2 selenium调用chrome自动访问维基百科

3 selenium爬取维基百科信息

代码及软件下载地址:

<a target="_blank" href="http://download.csdn.net/detail/eastmount/9422875">http://download.csdn.net/detail/eastmount/9422875</a>

在对海量知识挖掘和自然语言处理(natural language processing,简称nlp)中会大量涉及到三大百科的语料问题,尤其是中文汉字语料问题,包括:百度百科、互动百科和维基百科。其应用涉及命名实体(named entity,简称ne)消歧、实体对齐、双语机器翻译、推荐系统、情感分析、知识图谱等领域。

其中三大百科准确率方面是维基百科&gt;互动百科&gt;百度百科;中文涉及实体内容是百度百科&gt;互动百科&gt;维基百科。如下图所示,维基百科wikipedia页面通常包括:title(标题)、description(摘要描述)、infobox(消息盒)、categories(实体类别)、crosslingual

links(跨语言链接)等。

[python] lantern访问中文维基百科及selenium爬取维基百科语料

但问题来了:中文维基百科总是被屏蔽,第一个问题就是如何访问中文维基百科呢?

[python] lantern访问中文维基百科及selenium爬取维基百科语料

lantern:一款免费强大的帆樯软件,译为“灯笼”。点击exe即可运行,非常巧小的一款软件;据说是google公司推出的,但确实良心制作。 

[python] lantern访问中文维基百科及selenium爬取维基百科语料
[python] lantern访问中文维基百科及selenium爬取维基百科语料

同时你可以访问youtube和维基百科了,就是这么简单~

[python] lantern访问中文维基百科及selenium爬取维基百科语料
[python] lantern访问中文维基百科及selenium爬取维基百科语料

selenium调用firefox浏览器直接设置代码"driver = webdriver.firefox()"即可,但是调用chrome需要下载chromedriver.exe驱动。同时放置于chrome安装目录下:

我的目录:c:\program files (x86)\google\chrome\application,如果你报错:

[python] lantern访问中文维基百科及selenium爬取维基百科语料

同时添加该路径到环境变量path中:

[python] lantern访问中文维基百科及selenium爬取维基百科语料

下面简单四句代码即可调用浏览器自动访问维基百科页面:

爬取的方法与前面百度百科的方法类似,现在txt中定义实体名称,即需要爬取的网页名称,再去到具体页面爬取内容。这里需要讲述一个方法:

                                           https://zh.wikipedia.org/wiki/阿富汗

可以访问中国页面,同样该方法适用于互动百科,即:url+文件中读取实体名称

[python] lantern访问中文维基百科及selenium爬取维基百科语料

当然百度百科,你只需要获取输入框的按钮信息,然后输入读取文件名称,自动回车或点击即可。其中你可能会遇到一些存在歧义的页面,再处理下即可。同时维基百科和互动百科中存在分类页面,归纳了自己想要的内容,也比较方便。

最后是代码及运行结果:

运行结果如下图,共爬取了每个实体的10段信息,而百度摘要会有id,可只爬取摘要。

[python] lantern访问中文维基百科及selenium爬取维基百科语料

同样,你也可以通过下面这部分代码爬取infobox信息,首先给出html源码标签:

[python] lantern访问中文维基百科及selenium爬取维基百科语料

核心代码:

elem_value = driver.find_elements_by_xpath("//table[@class='infobox']")

具体代码如下:

运行结果如下图所示:

[python] lantern访问中文维基百科及selenium爬取维基百科语料

最后希望文章对你有所帮助,还是那句话:如果刚好你遇到这个问题,就会受益匪浅;否则感觉没什么技术含量,不过确实也挺简单的,但是灯笼还是非常强大的。一月份终于要结束了,不知道多少个熬夜到早上10点,回家好好享受下生活吧~