Python + Selenium爬取drugbank药物靶点信息
由于时效问题,该文某些代码、技术可能已经过期,请注意!!!本文最后更新于:2 年前
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 协议 ,转载请注明出处!