Python requests+bs4爬取中药数据库TCMSP的资源获得清肺排毒汤的靶向基因(曲线救国)

本文介绍了如何使用Python的requests和bs4库爬取TCMSP网站,获取清肺排毒汤中中药材的靶向基因。通过对URL的观察和解析,作者发现了编码规则,并通过正则表达式提取关键信息,最终成功获取到目标数据。
摘要由CSDN通过智能技术生成

Python requests+bs4 爬取TCMSP的资源获得清肺排毒汤的靶向基因

为研究清肺排毒汤的中药材对于新冠肺炎的作用机制,需要收集相关数据,于是将目光洒向了TCMSP。。

检索首页是这样的:

在这里插入图片描述
接下来用一味药材进行检索。

中药材检索界面获取

以清肺排毒汤中的麻黄为例,进行检索后它的界面是这样的,注意观察url:
http://tcmspw.com/tcmspsearch.php?qs=herb_all_name&q=麻黄&token=9b8fe8d60b5028b2eb0ee7e5e7834a40
在这里插入图片描述
找规律:
1.http://tcmspw.com/tcmspsearch.php?qs=herb_all_name&q=麻黄&token=9b8fe8d60b5028b2eb0ee7e5e7834a40
也可能是这样:
http://tcmspw.com/tcmspsearch.php?qs=herb_all_name&q=%E9%BA%BB%E9%BB%84&token=9b8fe8d60b5028b2eb0ee7e5e7834a40
2.http://tcmspw.com/tcmspsearch.php?qs=herb_all_name&q=广藿香&token=9b8fe8d60b5028b2eb0ee7e5e7834a40
也可能是这样:
http://tcmspw.com/tcmspsearch.php?qs=herb_all_name&q=%E5%B9%BF%E8%97%BF%E9%A6%99&token=9b8fe8d60b5028b2eb0ee7e5e7834a40
也就是说url可能对中文字符进行了16进制的编码。
发现除了q=后面的中药材名称不同,其他的都相同,而且可以分为四大块:
1.http://tcmspw.com/tcmspsearch.php?
2.qs=herb_all_name&q=
3.中药名或者其对应的16进制的编码
4.&token=9b8fe8d60b5028b2eb0ee7e5e7834a40
然后可以写代码了:
导入需要的库,parse是用以解码中文的。当用中文访问失败时,可以将中文解码再试试。后面解码的过程注释掉了。

import requests
# import urllib.parse  # urllib用以解码中药材名称,是否需要见具体需求
from bs4 import BeautifulSoup
import re
import xlsxwriter

class get_drug_target(object):

    def __init__(self):
        self.headers = {
   
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36',
        }
        self.base_url = 'http://tcmspw.com/tcmspsearch.php?'

根据上面提到的格式将url进行拼接,并请求:

def get_url(self, drug):
    # 下面注释的是中文解码的过程
    # drug_decode = urllib.parse.quote(drug)
    # url = self.base_url+'qs=herb_all_name&q='+drug_decode+'&token=f8abf58ec1d6b214e0d6ca4ec94ee7d3'
    # 下面是不解码
    url = self.base_url+
  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值