关于使用Python自动化数据挖掘的建议

关于使用Python自动化数据挖掘的建议,python,automation,Python,Automation,我是一名生物学家,有一点Python编程经验。我的研究方法之一涉及使用此数据库分析大型基因列表: 有人能告诉我是否可以对输出进行关键字搜索并返回与关键字相关联的基因名吗?这是针对“表”输出的,其外观如下: 还有后端和api选项。 非常感谢您提供的所有见解和建议。如果有一个API可以为您提供所有数据,那么您几乎可以自动化与之相关的所有内容。API要么是REST要么是SOAP,所以首先您需要弄清楚您需要什么 如果API是RESTful的: import urllib2, json url = "h

我是一名生物学家,有一点Python编程经验。我的研究方法之一涉及使用此数据库分析大型基因列表: 有人能告诉我是否可以对输出进行关键字搜索并返回与关键字相关联的基因名吗?这是针对“表”输出的,其外观如下: 还有后端和api选项。
非常感谢您提供的所有见解和建议。

如果有一个API可以为您提供所有数据,那么您几乎可以自动化与之相关的所有内容。API要么是REST要么是SOAP,所以首先您需要弄清楚您需要什么

如果API是RESTful的:

import urllib2, json

url = "https://mysuperapiurl.com/api-ws/api/port/" 
u = 'APIUsername'
p = 'APIPassword'

def encodeUserData(user, password):
    return "Basic " + (user + ":" + password).encode("base64").rstrip()
req = urllib2.Request(url)
req.add_header('Accept', 'application/json')
req.add_header("Content-type", "application/x-www-form-urlencoded")
req.add_header('Authorization', encodeUserData(u, p))
res = urllib2.urlopen(req)
j = json.load(res) # Here is all the data from the API
json_str= json.dumps(j) # this is the same as above as string
如果API是SOAP,则会变得更难。我的建议是。如果因为您的服务器是2.6或有几个人在使用它而无法做到这一点,请使用
suds

对于肥皂水,API调用如下所示:

import logging, time, requests, re, suds_requests
from datetime import timedelta,date,datetime,tzinfo
from requests.auth import HTTPBasicAuth
from suds.client import Client
from suds.wsse import *
from suds import null
from cStringIO import StringIO
from bs4 import BeautifulSoup as Soup

log_stream = StringIO()
logging.basicConfig(stream=log_stream, level=logging.INFO)
logging.getLogger('suds.transport').setLevel(logging.DEBUG)
logging.getLogger('suds.client').setLevel(logging.DEBUG)

WSDL_URL = 'http://213.166.38.97:8080/SRIManagementWS/services/SRIManagementSOAP?wsdl'

username='username'
password='password'
session = requests.session()
session.auth=(username, password)

def addSecurityHeader(client,username,password):
    security=Security()
    userNameToken=UsernameToken(username,password)
    security.tokens.append(userNameToken)
    client.set_options(wsse=security)

addSecurityHeader(client,username,password)

arg1 = "argument_1"
arg2 = "argument_2"

try:
    client.service.GetServiceById(arg1, arg2)
except TypeNotFound as e:
    print e
logresults = log_stream.getvalue()
您将收到xml作为回报,因此我使用
beautifulsou
美化结果:

soup = Soup(logresults)
print soup.prettify()
好的,我们将介绍API连接部分,您将数据存储在哪里,在哪里迭代这些数据以执行关键字搜索?在您的数据库中。我推荐
MySQLdb
。设置您的表,并考虑要将哪些信息(从API收集的)存储在哪个列中

def dbconnect():
    try:
        db = MySQLdb.connect(
            host='localhost',
            user='root',
            passwd='password',
            db='mysuperdb'
        )
    except Exception as e:
        sys.exit("Can't connect to database")
    return db

def getSQL():   
    db = dbconnect()
    cursor = db.cursor()
    sql = "select * from yoursupertable"
    dta = cursor.execute(sql)
    results = cursor.fetchall()
    return results

def dataResult():
    results = getSQL()
    for column in results:
        id = (column[1])
print dataResult()

因此,您可以在这里设置关键字(也可以通过另一个SQL进行设置),将从数据库中提取的结果与列表、dict、textfile或硬编码关键字进行比较,并定义它们匹配时应执行的操作等:)

如果有一个开放的API,您应该在查看web抓取之前尝试使用该API。也不适合我。API限制是否满足您的需求?少于400个基因,url输入限制为2048个字符,每天200个请求?至于Other问题,您提供的关键字搜索链接似乎不起作用(会话已过期),仅供参考,您提供的第二个链接已断开。您到底想做什么还不清楚,但如果可能的话,在生物信息学中大量使用的Python中应该是可行的,甚至有些简单。谢谢您的回答。我为断开的链接道歉。这是一个使用DAVID提供的测试基因列表的“表格”输出示例。感谢您的帮助。我会告诉你进展情况。如果这个答案对你有帮助,请考虑投票/接受。