Ich bin ein Biologe mit ein wenig Programmiererfahrung in Python. Eine meiner Forschungsmethoden beinhaltet das Profilieren großer Genlisten unter Verwendung dieser Datenbank: https://david.ncifcrf.gov/ Kann mir jemand sagen, ob es möglich wäre, eine Stichwortsuche der Ausgabe durchzuführen und den mit dem Schlüsselwort verbundenen Gennamen zurückzugeben? Dies ist für die Ausgabe "Table", die so aussieht: https://david.ncifcrf.gov/annotationReport.jsp?annot=59,12,87,88,30,38,46,3,5,55,53,70,79¤tList=0 Es gibt auch Back-End-und API-Optionen. Alle Einblicke und Ratschläge werden sehr geschätzt.Hinweis zur Automatisierung der Datenerfassung mit Python
Antwort
Wenn es eine API gibt, die Ihnen alle Daten liefert, können Sie fast alles, was damit verbunden ist, automatisieren. APIs sind entweder REST oder SOAP, also müssen Sie zuerst herausfinden, was Sie brauchen.
Wenn die API ist 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
wenn die API SOAP ist, wird es ein bisschen schwieriger. Was ich empfehle ist zeep. Wenn das nicht möglich ist, weil Ihr Server 2.6 ist oder weil mehrere Personen daran arbeiten, verwenden Sie suds
.
mit Schaum ein API-Aufruf sieht wie folgt aus:
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()
Sie xml erhalten im Gegenzug so i beautifulsoup
verwenden, um die Ergebnisse zu beschönigen:
soup = Soup(logresults)
print soup.prettify()
Ok, so dass die API Verbindungsteil abgedeckt ist , wo speichern Sie Ihre Daten und wo durchlaufen Sie diese Daten, um eine Stichwortsuche durchzuführen? In deiner Datenbank. Ich empfehle MySQLdb
. Richten Sie Ihre Tabelle ein und überlegen Sie, welche Informationen (die Sie von der API erfassen) in welcher Spalte gespeichert werden.
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()
Also das ist, wo Sie Ihre Keywords festlegen (auch sie über eine andere SQL tun könnte) und vergleichen Sie die Ergebnisse, die Sie aus Ihrer Datenbank mit einer Liste, dict, Text-Datei oder hartcodierte Schlüsselwörter extrahieren und definieren, was ist, wenn sie tun match etc :)
Vielen Dank für Ihre Hilfe. Ich werde dich wissen lassen, wie es läuft. – AnnaD
Wenn diese Antwort Ihnen geholfen hat, denken Sie bitte darüber nach, es als Antwort anzunehmen. –
- 1. Automatisierung der GMAIL-Anmeldung mit Python-Selenium
- 2. Python-Automatisierung der ArcGIS-Feldberechnung
- 3. Code zur Automatisierung der inkrementierten ZIP-Komprimierung?
- 4. Python-Automatisierung
- 5. Wie Datenerfassung mit PDO?
- 6. Hinweis zur Verwendung von Crontab mit Bash
- 7. PowerShell-Skripts zur Automatisierung von BizTalk-Konfigurationen
- 8. Python Automatisierung mit Lackey Bibliothek
- 9. Hinweis zur Änderung von NetTiers
- 10. Ändern der Datenerfassung in MySQL
- 11. Parametrieren Sie Funktionen zur Automatisierung der Website mit Selen Webdriver mit Python
- 12. Yii2 Hinweis zur Validierung anzeigen
- 13. SFTP zur ZIP-Datei Automatisierung zu ServiceNow
- 14. Facebook Konto Download Automatisierung mit Python?
- 15. Datenerfassung von mehreren Workstations
- 16. C# mongoDB Datenerfassung
- 17. Python Slicing-String mit dem Hinweis Sonderzeichen
- 18. Anmeldung Automatisierung und kriechenden mit Scrapy Python
- 19. Android-Automatisierung mit Gurke und Python
- 20. Emotiv Epoc Datenerfassung
- 21. Browser-Automatisierung: Python + Firefox mit PyXPCOM
- 22. PowerShell-Skript zur Automatisierung der Dateneingabe in OpenOffice Calc Spreadsheet
- 23. Wie beschleunigt der HAWQ-Design-Cache die Geschwindigkeit der Datenerfassung?
- 24. Automatisierung von Tests zur Überprüfung der XML-Ausgabe
- 25. Gibt es eine empfohlene Methode zur Automatisierung der Modulanschlussverbindung?
- 26. Bester Weg zur Automatisierung des täglichen Builds
- 27. Hinweis zum Caching für Python
- 28. Wie kann NLog/Log4Net zur Automatisierung der Datenbankänderung verwendet werden?
- 29. Oracle Change-Datenerfassung mit Kafka Best Practices
- 30. Verwenden von Python zur Automatisierung der Erstellung/Bearbeitung von Excel-Tabellen
Wenn es eine offene API gibt, sollten Sie diese verwenden, bevor Sie in Web Scraping suchen. Auch https://david.ncifcrf.gov/annotationReport.jsp?annot=59,12,87,88,30,38,46,3,5,55,53,70,79¤tList=0 funktioniert nicht für mich. –
Erfüllen API-Beschränkungen Ihre Anforderungen? Weniger als 400 Gene, Begrenzung der URL-Eingabe auf 2048 Zeichen, 200 Anfragen pro Tag? Wie für andere Frage mit Keyword Search Link, die Sie bereitgestellt haben scheint nicht zu funktionieren (Sitzung abgelaufen) –
FYI, der zweite Link, den Sie gaben, ist gebrochen. – Petar