Python + Selenium爬取drugbank药物靶点信息
由于时效问题,该文某些代码、技术可能已经过期,请注意!!!本文最后更新于:3 年前
Selenium爬虫
为什么要使用selenium来进行爬取,因为有的网站有反爬机制,平常的requests等无法爬取。
Selenium可使用pip进行安装
1  |  | 
这里使用chrome浏览器进行爬取,所以需要下载对应版本的chromedriver,下载地址如下
https://chromedriver.storage.googleapis.com/index.html
在drugbank网站输入一个drugID或者drug的名字即可查到该药物的相关信息,根据自己的需求进行提取。我主要是需要靶点的信息即targets。
1  |  | 
运行代码会打开一个chrome窗口显示对应的drug的信息,就如同自己输入一样。
如果想获取或者保存整个网页的源代码,可通过如下代码
1  |  | 
如果只是想获取某一部分信息,就需要进行提取了。
在网页上选中自己感兴趣的信息点击右键,选择检查就可以直接定位到html中。
在 WebDriver 中现在有两种用法,find_element()和find_elements()。需要通过参数传入定位方式和定位语句。
比如这里通过ID定位查找元素
1  |  | 
find_elements()查到的信息是个列表
比如通过class 名字进行定位查找(targets信息)
1  |  | 
以上获取的是所有class名字为col-md-7 的所有内容,还需要手动确认列表中哪一项是自己需要的。当然了,以这种方式获取可能会存在bug,因为不能保证自己需要的信息一定在列表中的某一固定位置。
以下是定位方式与 By 中的属性对应清单:
| 定位方式 | By | 
|---|---|
| id | By.ID | 
| name | By.NAME | 
| class_name | By.CLASS_NAME | 
| tag_name | By.TAG_NAME | 
| link_text | By.LINK_TEXT | 
| partial_link_text | By.PARTIAL_LINK_TEXT | 
| css_selector | By.CSS_SELECTOR | 
| xpath | By.XPATH | 
顺便贴一下另一个数据库网站(药智数据,应该是这个公司自己整理的数据库,只对人民币玩家开放,所以只能不厚道了)的代码
1  |  | 
最后就是使用脚本批量爬取的时候电脑需要一直开机,而且会一直自动打开关闭chrome窗口,所以在爬取的时候就无法进行其他工作。
在网上找了下无头操作(即不显示窗口),但是结果却(头是没了,结果也没了),,,可能还是有bug,不过也好,在爬取的时候正好摸个鱼休息休息也不错。
1  |  | 
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!