python爬取MalaCards目录url

Python爬取MalaCards目录url

        每天进步一点点~这段时间瞄上了genecards网站,还得就它的数据库鏖战几天。而要获得它的基因信息,第一步,就是获得它所有数据的url,那就得先获得它的目录了。接下来,我们进入它的网页中看一看步骤。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# _author_='snowymilk8@gmail.com'
# To capture for MalaCards Database.
from bs4 import BeautifulSoup
import requests  # help: https://blog.csdn.net/jojoy_tester/article/details/70545589
import csv
import re

首先是引入需要的包。bs4用于解析,由于网页解析容错率的考虑,还得安装xlml包。requests用于连接,获取网页文本。csv用于存储,re作为正则用来辅助解析。

def check_link(url):
    try:
        header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0'}
        r = requests.get(url, headers=header)
        r.raise_for_status()  
        r.encoding = r.apparent_encoding
        return r.text
    except:
        print('无法连接服务器')

连接网页是重点,因此一般都会检查看是否成功。试过直接请求都失败了,就加上了headers模拟浏览器进行请求。

def get_contents(ulist, rurl):
    soup = BeautifulSoup(rurl, 'lxml')  # help: https://cuiqingcai.com/1319.html
    trs = soup.find_all('tr')
    for tr in trs:
        ui = []
        for td in tr:
            if 'href' in str(td):
                pattern = re.compile('/categories/\w+')
                p=pattern.search(str(td))
                pu='http://www.malacards.org'+p.group(0)
                ui.append(pu)
            else:
                ui.append('\n')
            ui.append(td.string)
        ulist.append(ui)

用bs4找到tr中的td。语法的参考博文都在注释中。不过笔者尝试了好久,作为tag的td一直没有可用属性,于是又引入了正则,把它的url提了出来。

def save_contents(urlist):
    with open("E:/script/categories_of_malacards.csv", 'w', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(['disease lists'])
        for i in range(len(urlist)):
            writer.writerow([urlist[i][3], urlist[i][7], urlist[i][2]])


def main():
    urli = []
    url = "http://www.malacards.org/categories"
    rs = check_link(url)
    get_contents(urli, rs)
    save_contents(urli)
main()

最后,调用csv保存,目录就完完整整地扣下来啦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值