本文主要是自己的在线代码笔记。在生物医学本体ontology构建过程中,我使用selenium定向爬取生物医学pubmed数据库的内容。
pubmed是一个免费的搜寻引擎,提供生物医学方面的论文搜寻以及摘要。它的数据库来源为medline(生物医学数据库),其核心主题为医学,但亦包括其他与医学相关的领域,像是护理学或者其他健康学科。它同时也提供对于相关生物医学资讯上相当全面的支援,像是生化学与细胞生物学。
pubmed是因特网上使用最广泛的免费medline,该搜寻引擎是由美国国立医学图书馆提供,它是基于web的生物医学信息检索系统,它是ncbi
entrez整个数据库查询系统中的一个。pubmed界面提供与综合分子生物学数据库的链接,其内容包括:dna与蛋白质序列,基因图数据,3d蛋白构象,人类孟德尔遗传在线,也包含着与提供期刊全文的出版商网址的链接等。
实现代码
实现的代码主要是selenium通过分析网页dom结点进行爬取。
在网址中搜索protein(蛋白质)后,分析网址可发现设置page=1~20可爬取前1~20页的url信息。链接如下:
分析html
1.获取每页page中的20个关于protein(蛋白质)的url链接和标题。其中geturl()函数中的核心代码获取url如下:
url = driver.find_elements_by_xpath("//div[@id='div_data']/div/div/h3/a")
url_content = url.get_attribute("href")
getabstract(num,title,url_content)

2.再去到具体的生物文章页面获取摘要信息
其中你可能遇到的错误包括:
1.error: 'ascii' codec can't encode character u'\u223c'
它是文件读写编码错误,我通常会将open(filename,"w")改为codecs.open(filename,'w','utf-8') 即可。
2.第二个错误如下图所示或如下,可能是因为网页加载或connection返回close导致
webdriverexception: message: error message => 'url ' didn't load. error: 'typeerror: 'null' is not an object
运行结果
得到的运行结果如下所示:00001.txt~00400.txt共400个txt文件,每个文件包含标题和摘要,该数据集可简单用于生物医学的本体学习、命名实体识别、本体对齐构建等。
ps:最后也希望这篇文章对你有所帮助吧!虽然文章内容很简单,但是对于初学者或者刚接触爬虫的同学来说,还是有一定帮助的。同时,这篇文章更多的是我的个人在线笔记,简单记录下一段代码,以后也不会再写selenium这种简单的爬取页面的文章了,更多是一些智能动态的操作和scrapy、python分布式爬虫的文章吧。如果文中有错误和不足之处,还请海涵~昨天自己生日,祝福自己,老师梦啊老师梦!!!