爬取百度百科语料
前言
迫于毕业压力,开始自学NLP(在一个研究院读研,早早开始实习,然而实习公司部门没有能支撑写论文的项目,想想还是挺坑的????♂️),看了一些资料,决定先开始从词向量入门吧,然而没有好的中文语料,虽然*提供免费的中文语料,但是我看了一下,还要繁体转简体,巴拉巴拉的,并且国内用*毕竟少数,所以估计语料的质量也不咋地,想着我们日常比较常用百度,百度百科作为中文语料应该不错,本以为百度爸爸会开源给我们,然鹅是我想多了,还是自己爬取,做为小白的我,当然是先百度一波,参考一下大佬的代码咯,然后就发现了大佬苏神几年前写的,在这个基础上,稍微改动了一下,优化了一下爬取的内容。
思路
1.初始化一个百度百科词条的URL
2.模拟浏览器访问URL,爬取本页面需要的词条内容,并找出该页面内所有的站内链接(由于爬取的数据较多,沿用苏神的思路,将数据存在mongodb,个人也觉得芒果和python很搭,简直是无缝衔接)
3.将链接单独存于一个集合,为了保证速度,建立索引
4.用多线程在库里取链接爬数据
整体思路就是这样,还是比较清晰的吧
代码
代码在我的GitHub上,欢迎访问????
完整代码
一些细节
可能百度做了一些简单的防爬虫,需要模拟浏览器才能get到数据,python3还是非常人性化,满足一个懒人的习惯,只需要在get的时候加上一个headers就可以了,所谓人生苦短,我用python,headers的获取方法也比较简单,用谷歌浏览器,F12->Network->点击name下一个链接->Headers->找到User-Agent即可。
some tips:
[re.sub('[ \n\r\t\u3000]+', ' ', re.sub('<.*?>|\xa0', '', unescape(str(t))).strip()) for t in text])#去除一些空格,对爬取的网页内容做简单处理
#\u3000 表示全角空白符,\xa0表示不间断空白符
使用re.sub()函数处理爬取的网页数据,简直是个神器呀,get到了。
结果
数据还在爬取中,爬了一下午,爬了6W余条,网速不给力????,数据估计比较大,不打算上传到GitHub上,建议自己动手试试。
结束语
开篇之作,有些废话连篇,打开写博客之路,强迫自己学习,希望顺利毕业????。
本博客代码参考苏神之作,原文链接????
上一篇: js截取字符串里的某个字符