À l'aide de Python pour demander une page web pour effectuer une recherche
J'ai une liste de protéines noms dans le "Uniprot" format, et je voudrais les convertir à la MGI format. Si vous allez à www.uniprot.org et le type de la uniprot protéine nom dans la "Requête" de la barre, il va générer une page avec un tas d'informations sur les protéines, y compris ses MGI nom (quoique beaucoup plus bas dans la page).
Par exemple, un Uniprot nom est "Q9D880", et par le défilement vers le bas, vous pouvez voir que son correspondant MGI nom est "1913775".
Je sais déjà comment utiliser Python urllib pour extraire la MGI nom d'une page, une fois que j'arrive à cette page. Ce que je ne pas savoir comment faire est d'écrire du code Python pour obtenir la page principale pour exécuter une requête de "Q9D880". Ma liste contient 270 protéine noms, donc ce serait bien d'éviter de copier&collage de chaque protéine nom dans la barre de Requête.
J'ai vu la "Recherche Google à partir d'une Application Python" de poste, et j'ai une meilleure compréhension de ce concept, mais je soupçonne que l'exécution d'une recherche sur google est différente de l'exécution de la fonction de recherche sur un autre site, comme uniprot.org.
Je suis en cours d'exécution Python 2.7.2, mais je suis ouvert à la mise en œuvre de solutions qui utilisent d'autres versions de Python. Merci pour l'aide!
- Regardez l'url que vous obtenez lorsque vous effectuez une Requête: uniprot.org/uniprot/Q9D880 Si vous regardez vraiment dur, vous pouvez comprendre où votre requête est allé...
- Je ne sais rien sur le web en développement, mais même, j'aurais été en mesure de voir ça! Merci!
Vous devez vous connecter pour publier un commentaire.
Moyen plus facile de le faire est avec la
demande
de la bibliothèque. Ma solution pour vous attrape aussi les informations de la page à l'aide de BeautifulSoup4.Tout ce que vous avez à faire, donné un dictionnaire de vos paramètres de requête, est:
soup = BS(text)
Il dit le nom de " BS " n'est pas défini. Des idées?MGI = soup.find(name....
est de retour d'une "Aucun" type. Je sais que cet élément EST sur la page web, je suis donc allé à la section dépannage de la BS de la documentation. Elle a suggéré de mettre à niveau ma analyseur en téléchargeantlxml
. Est-ce quelque chose que vous avez déjà fait? Si oui, vous pourriez peut-être m'aider à comprendre comment faire pour télécharger les deux exigences, "libxml2 2.6.21 ou plus tard" et "libxslt 1.1.15 ou tard". À cette adresse xmlsoft.org/libxml2 je viens de voir un très long et confus de la liste de fichiers. Ne savez pas par où commencer.http://www.uniprot.org/' + protein
au lieu dehttp://www.uniprot.org/uniprot/' + protein
, comme il se doit. Essayez encore une fois, regardez ma mise à jour.L'exécution de la recherche semble se faire un GET sur
Qui finalement vous redirige vers
De sorte que vous devriez être en mesure d'utiliser
urllib
ou un http bibliothèque (j'utilisehttplib2
) pour faire un GET sur l'adresse, le paramétrage de la protéine nom dans l'URL de sorte que vous pouvez rechercher pour quelle protéine nom que vous voulez.Vous pouvez aussi le faire avec
PyQuery
:De la requête dans l'URL, vous pouvez appeler le:
http://www.uniprot.org/uniprot/?query=1913775&tri=score
Je n'ai pas eu le temps de tester ce script, puisque je n'ai pas de 2.x est plus installé, mais dans le code en 2.x doit être quelque chose comme ceci:
Le code en 3.2, j'ai couru a été fait, et cela a bien fonctionné:
Juste de la boucle de la MGIname sur la liste des noms de