Python搜索和报废

2024-05-14 07:45:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,我想知道是否值得花时间用Python来解决。我有一个很大的CSV文件,里面有鱼的学名。我想交叉引用的CSV文件与一个大型数据库的鱼类形态信息(www.fishbase.ca)让代码返回每条鱼的最大长度。基本上,我需要创建代码,将搜索每个鱼的fishbase网站,然后找到页面上的最大长度信息,并以CSV文件的形式返回给我。最后两个部分相对简单明了,但第一个部分是我被卡住的地方。提前谢谢。在


Tags: 文件csv代码信息数据库网站www时间
2条回答

看起来你可以直接从属和种生成url,即

虹鳟(oncorhynchus mykiss)变成

http://www.fishbase.ca/summary/Oncorhynchus-mykiss.html

所以有点像

^{pr2}$

从页面源代码来看,html是非常不敏感的;虽然用正则表达式解析html是邪恶和可怕的,但我真的认为这是这种情况下最简单的方法:

import re

fishlength = re.compile("max length : ([\d.]+) ([cm]{1,2})", re.I).search

def get_length_in_cm(html):
    m = fishlength(html)
    if m:     # match found
        value = float(m.group(1))
        unit  = m.group(2)
        if unit == "cm":
            return value
        elif unit == "m":
            return value * 100.
        else:
            raise ValueError("Unknown unit: {}".format(unit))
    else:
        raise ValueError("Length not found")

然后抓住每一页

^{4}$

因此,为了在其他web应用程序中使用这些信息,您需要使用API来获取它们的数据。在

在鱼基地.ca(or.org)没有官方的面向公众的API。有一些关于创建restfulapi的chat in 2013,这正是您所需要的,但这还没有发生(不要屏住呼吸)。在

另一种方法是使用需要查找的鱼的名称,将其放入URI中(例如www.fishbase.ca/fish/Rainbow+鳟鱼)然后使用Xquery或类似工具深入DOM以找到最大长度。在

不幸的是,fishbase也没有这种方法所需的URI,this是彩虹鳟鱼的URI-使用ID而不是名称来轻松查找。在

我建议寻找另一个数据提供者来寻找这两个api中的任何一个。在

关于第二种方法:网站所有者可能不会通知你以这种方式使用他们的网站。如果可以的话,事先问问他们。在

相关问题 更多 >

    热门问题