0
点赞
收藏
分享

微信扫一扫

symmap网络药理学网站数据爬取

以沫的窝 2022-01-21 阅读 118

这个网站的数据更新比较频繁,而且数据齐全,这里我们就以爬取药草的靶点基因数据为例。

首先,我们在browse页面随便进入一个药草页面
在这里插入图片描述

1.分析该网站所发送的请求

打开web调试器(F12),抓包分析请求,发现在这里插入图片描述
在后台打印发现这一条就是用来获取数据的请求

但是所得到的数据并不是该网页所展示的内容,其实是因为我们并没有携带想要获取哪一个对象的资料,symmap网站可能返回的是默认某一对象的数据。
所以我们要研究请求数据需要携带什么参数。

2.查看网页源码

在这里插入图片描述
这里我们要获取的数据是如下图的table在这里插入图片描述
了解一下点击Target时会发生什么响应
在这里插入图片描述
直接下载网页源码,然后在里面定位搜索该DOM标签的id,发现该点击事件中有一个函数change_browse()
在这里插入图片描述
于是乎研究下该函数的内容
在这里插入图片描述
这样阅读下来,了解到了发送请求的参数:
在这里插入图片描述
继续阅读,同时结合网页上的DOM元素定位,找到了data里面的三个key的值:
在这里插入图片描述
1)filter_type
这里是通过DOM标签的browse_select获取的,而这个值是用来做target基因的排序,筛选的
在这里插入图片描述

2)source_type

这个是通过DOM标签的req_name获取值的,而且这个值表示的是请求哪个对象,也就是哪个药草的id在这里插入图片描述
3)browse_type
在这里插入图片描述
继续阅读源码不断搜索,browse_type=filter_text,而filter_text的值对应于该字典中,这个又是什么意思呢?其实这里就是symmap table上面的按钮,我们要的是target,对应的值就是字典里的Gene在这里插入图片描述

3.后台请求

知道了对应三个参数的意义,我们就可以在后台进行数据爬取了

import requests
import json
headers = {
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',
}
url='http://www.symmap.org/related_components/'
da={
    'rrid':'SMHB00001',
    'table_name':'Gene'
     }
res = requests.post(url,headers=headers,data=da)
print(res.text)

这里我筛选获取其中三项,如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
数值完全一样。

举报

相关推荐

0 条评论