本文主要是自己的在线代码笔记。在生物医学本体Ontology构建过程中,我使用Selenium定向爬取生物医学PubMed数据库的内容。
        PubMed是一个免费的搜寻引擎,提供生物医学方面的论文搜寻以及摘要。它的数据库来源为MEDLINE(生物医学数据库),其核心主题为医学,但亦包括其他与医学相关的领域,像是护理学或者其他健康学科。它同时也提供对于相关生物医学资讯上相当全面的支援,像是生化学与细胞生物学。
        PubMed是因特网上使用最广泛的免费MEDLINE, 该搜寻引擎是由美国国立医学图书馆提供, 它是基于WEB的生物医学信息检索系统,它是NCBI Entrez整个数据库查询系统中的一个。PubMed界面提供与综合分子生物学数据库的链接,其内容包括:DNA与蛋白质序列,基因图数据,3D蛋白构象,人类孟德尔遗传在线,也包含着与提供期刊全文的出版商网址的链接等。
        医学导航链接:http://www.meddir.cn/cate/736.htm
        PubMed官网:http://pubmed.cn/

实现代码

实现的代码主要是Selenium通过分析网页DOM结点进行爬取。
        爬取的地址是:http://www.medlive.cn/pubmed/
        在网址中搜索Protein(蛋白质)后,分析网址可发现设置Page=1~20可爬取前1~20页的URL信息。链接如下:
        http://www.medlive.cn/pubmed/pubmed_search.do?q=protein&page=1

# coding=utf-8
"""
Created on 2015-12-05  Ontology Spider
@author Eastmount CSDN
URL:http://www.meddir.cn/cate/736.htmhttp://www.medlive.cn/pubmed/http://paper.medlive.cn/literature/1502224
"""import time
import re
import os
import shutil
import sys
import codecs
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from selenium.webdriver.common.action_chains import ActionChains  #Open PhantomJS
driver = webdriver.Firefox()
driver2 = webdriver.PhantomJS(executable_path="G:\phantomjs-1.9.1-windows\phantomjs.exe")
wait = ui.WebDriverWait(driver,10)'''Load Ontoloty去到每个生物本体页面下载摘要信息http://paper.medlive.cn/literature/literature_view.php?pmid=26637181http://paper.medlive.cn/literature/1526876
'''
def getAbstract(num,title,url):try:fileName = "E:\\PubMedSpider\\" + str(num) + ".txt"#result = open(fileName,"w")#Error: 'ascii' codec can't encode character u'\u223c'result = codecs.open(fileName,'w','utf-8') result.write("[Title]\r\n")result.write(title+"\r\n\r\n")result.write("[Astract]\r\n")driver2.get(url)elem = driver2.find_element_by_xpath("//div[@class='txt']/p")#print elem.textresult.write(elem.text+"\r\n")except Exception,e:    print 'Error:',efinally:result.close()print 'END\n''''循环获取搜索页面的URL规律 http://www.medlive.cn/pubmed/pubmed_search.do?q=protein&page=1
'''
def getURL():page = 1      #跳转的页面总数count = 1     #统计所有搜索的生物本体个数    while page<=20:url_page = "http://www.medlive.cn/pubmed/pubmed_search.do?q=protein&page="+str(page)print url_pagedriver.get(url_page)elem_url = driver.find_elements_by_xpath("//div[@id='div_data']/div/div/h3/a")for url in elem_url:num = "%05d" % counttitle = url.texturl_content = url.get_attribute("href")print numprint titleprint url_content#自定义函数获取内容getAbstract(num,title,url_content)count = count + 1else:print "Over Page " + str(page) + "\n\n"page = page + 1else:"Over getUrl()\n"time.sleep(5)'''主函数预先运行
'''
if __name__ == '__main__':'''path = "F:\\MedSpider\\"if os.path.isfile(path):         #Delete fileos.remove(path)elif os.path.isdir(path):        #Delete dir    shutil.rmtree(path, True)    os.makedirs(path)                #Create the file directory'''getURL()print "Download has finished."

分析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分布式爬虫的文章吧。如果文中有错误和不足之处,还请海涵~昨天自己生日,祝福自己,老师梦啊老师梦!!!
      (By:Eastmount 2015-12-06 深夜3点半   http://blog.csdn.net/eastmount/)  

[python爬虫] Selenium定向爬取PubMed生物医学摘要信息相关推荐

  1. [python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈

    我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的.首先通过这篇文章,你能学到以下几点:         1.可以了解Python简单爬取图片的一些思路和方 ...

  2. python爬取论坛图片_[python爬虫] Selenium定向爬取虎扑篮球海量精美图片

    前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...

  3. 什么是定向爬取技术,Python爬虫的定向爬取技术需解决哪些问题?

    一.什么是爬虫的定向爬取技术 通俗来说,爬虫的定向爬取技术就是根据设置的主题,对要爬取的网址或者网页中的内容进行筛选.比如我们可以使用正则表达式进行筛选等,筛选之后,再爬取对应的网址中的内容,并可以根 ...

  4. Python爬虫入门 | 4 爬取豆瓣TOP250图书信息

      先来看看页面长啥样的:https://book.douban.com/top250   我们将要爬取哪些信息:书名.链接.评分.一句话评价--   1. 爬取单个信息 我们先来尝试爬取书名,利用之 ...

  5. python爬虫——selenium+bs4爬取选股宝‘利好‘or’利空'股票信息

    一.前言. (1)我个人比较喜欢先看结果,再看内容,so,结果如图: (2)信息抓取自选股宝https://xuangubao.cn/(我这里设定抓取加载20页,下面只列举几个): (3)本次主要应用 ...

  6. Python爬虫实战(1)-爬取“房天下”租房信息(超详细)

    前言 先看爬到的信息: 今天主要用到了两个库:Requests和BeautifulSoup.所以我先简单的说一下这两个库的用法,提到的都是此文需要用到的. Requests requests是一个很实 ...

  7. Python爬虫实例:爬取国内所有医院信息

    本博客仅用于技术讨论,若有侵权,联系笔者删除. 此次的目的是爬取国内医院的基本信息,并按省份存储.爬取的黄页是医院列表.以下是结果图: 一.初始化数据 初始化基本的数据,包括global变量,省份名称 ...

  8. Python爬虫:通过爬取CSDN博客信息,学习lxml库与XPath语法

    目录 lxml库 lxml基本用法 解析XML文件 解析HTML文件 XPath 什么是XPath XPath语法 XPath实战 选取某节点的所有子孙节点 选取某节点的所有子节点 通过属性选取某节点 ...

  9. python爬虫scrapy爬取新闻标题及链接_python爬虫框架scrapy爬取梅花网资讯信息

    原标题:python爬虫框架scrapy爬取梅花网资讯信息 一.介绍 本例子用scrapy-splash爬取梅花网(http://www.meihua.info/a/list/today)的资讯信息, ...

最新文章

  1. Kibana 用户指南(使用Flight仪表盘探索Kibana)
  2. 使用 SQLServer On Linux 作为开发数据库遇到的编码问题
  3. 线性代数可以速成吗_怎么在一个晚上搞定线性代数?
  4. keras从入门到放弃(二十一)LSTM处理 RNN文本分类
  5. php获取linux是几核的,linux下怎么查看机器cpu是几核的
  6. 作者:牛海波,男,中国国防科技信息中心工程师。
  7. docker rabbitmq_Docker部署RabbitMQ集群
  8. Spring Security整合JWT,实现单点登录,So Easy~!
  9. 实话!为什么2019年,我劝你别再闷头学Python!
  10. 最正确的为GridView添加删除提示的方法(转)
  11. ARM指令ldr、str、stm、ldm理解
  12. git 为什么不能断点_Git 2.29 让 Git 成功“牵手”Gerrit
  13. C语言程序与程序设计语言
  14. Amesim2016与Matlab2017b联合仿真环境搭建
  15. Adding Powers
  16. FLASH闪存文件系统研究
  17. 桥本分数式(用递归法实现全排列)
  18. avformat_seek_file函数介绍
  19. 关于微信小程序获取小程序码并接受buffer流保存为图片
  20. win10 + Ubuntu 20.04 LTS 双系统 引导界面美化

热门文章

  1. 03excel函数2
  2. 六角螺母尺寸分类介绍
  3. 卅年史诗!地球上出现过的CPU完全收藏
  4. python怎么自动抢红包_抢红包,我还真没落下过!每个都抢得到!用Python实现自动抢红包...
  5. 一个小分享ai位图怎么变成矢量图
  6. 《消息队列》常问面试题
  7. 戴尔T5810电脑 Hackintosh 黑苹果efi引导文件
  8. 中国移动网络下网页加载资源无法正常使用问题
  9. 中投民生:今日A股大面积飘绿;注册制独领风骚
  10. SSM入门小项目----学生信息管理系统