1

J'essaye d'automatiser une recherche sur la base de données de domaine conservée (CDD) - http://www.ncbi.nlm.nih.gov/Structure/cdd/wrpsb.cgi avec python où je soumets du contenu à un formulaire HTML. Le problème est qu'une fois que le formulaire est soumis, une nouvelle page se charge d'attendre que la recherche soit terminée avant de rafraîchir la page avec les résultats. Tout cela se produit à la même adresse URL et lorsque j'automatise la soumission du formulaire, tout ce que je peux récupérer est la page de chargement résultant de la soumission - pas la page de résultats finale. J'ai essayé d'utiliser le sommeil etc pour retarder mais la soumission de formulaire obtient la première page qui se charge n'importe quoi. J'utilise le module de requêtes Python mais j'ai aussi essayé de mécaniser sans beaucoup de succès au-delà de récupérer le contenu de la page de chargement.Récupérer une soumission de formulaire HTML en Python quand il y a une page de chargement

import requests 

url = "http://www.ncbi.nlm.nih.gov/Structure/cdd/wrpsb.cgi" 
payload = {'seqinput':'AATCACTTCAGCACACGAGCTTATATGCTGCTTTATTGGAGAACCGAGTTGTCCTTTATTGTGGATGCAATCCCTTGTATGTGTTATACTTTATGCTAAAGTCATCGACCTTTGCGTAATCGATCGTAAATCCTGGTATAGGGTGTACTTCGGATTGCCCGAGCCTATATTGGGGGTGAACGGATCATAAAGTCACTACCATATTAAATTGTACTAAGTCACGCCCTGAATATCTCAGGTTTTGATTTTATCACATTTTATTTTAAACCCTAGTTAAAGCTTTACAACTTTAAAGTAAGCCGTATCGAAACGTTAATCGATCGCTGATTGCGTAACAATCAATAGTTAGTTTTATTTTTAATTTTCAATATTTATTTTTCAAAAATTTTAGTTAAGATTTTAGCTTGCCTTAAGCAGTCTTTATATCTTCTGTATTTAGTTTTAAAATTTTTAGGAGCTAAGTTCGCTTTGCTCTTTATAGCTATTTTATTTATTTTAGGAATTTTATCACCTCGTAATTATTTATTAATAACGTTAGCTCTATCCGTATACAATGTCTACGATACGTTGCACCAGTTTACCAAAATCGGTGTTGCGCATTCAACAACATTGCAGTAGTTTAGCTGCTGAACCTAGGCTAGTAACATTACCGAATAAAAAGTTTAAAGATTTCGTTAAATCATTTGAACACCTTGATGTGCCTCGACCATTTAATGTTTTAATGGAGTGGTCAGAGGTGTGTGATAATGATTACACGTTAGGATATTGCAAATCTTCTACATTATATGAACAAATGTTTATTTTGAAATATATGTTGGGTTTTAATTTTGAACCGCGTAAGTTGATCATACTCAAAAGACGAATGCAAGAGCGTTTGTTTTTTTTTTATAGAGGTTCCCGGACTATTATACCTTTGAATATGGTTTACCCATTATTTAAAGATACATTGAATAGTATCGGGCATCCAGATCATTTAAAACGACACGGATTCGAATATTTAGACCAAACAGATATACAGAAATTTCCATTTTTAATATTGATGTTTTGTATTAACATTGAACGTGTACCACTTAAGTGTTACAAATACAGTGCTAATATAAACGTTAAGGTTGCTTTGTCTCAATTACCTGTTTTAATGACTGCCCTTGTTAACAAGGAACGGTTAGTAGATCAGTACGATTTTCTAGTAGTATTACAAAATTTTCTACATTTTTTTTTTAGGAATTTAAGTTATACTAATCCAGTAGATTTAATTGAACATAGTTTTCTTAACGATTTAGGTTTGTACTGCGCGAAATTAGTTATGGTCAGACCCATATCTACCACTGAGTACCTACTTGGTGGCGATTGGGATTTGGACAGACCTTGTTTAGCGCCAAAGGAAACATGGGATGTATATTATCGGCTGCAGTCTGTTGCACAATTAGGTGTTGATGTCAACACTAATGTGCAAATGGATCCTGCATTTATACAAGCCTTGGACAAAATTGCCGAAACATTTGGAGAAGCGGTTAACAGCTTGCATTCAGTTGCTGGCGTTGCCGTGGATGGAATCAGGAAGAAATTTGCATGTTACCTATCTATTTGTTATAATTTGTATAGACTAGGTTCTGGTGGTATGTCTCCTCAAGACGTACTTATGAACATAGTTACTACACTTATGCAATCAGATATGCCTGCAAATATTATTCCACAATTGCGAAGTATATTTTTAACATCTACAGCGCAGTCTGCTACTGTTGATGGAATGGTAATTGCAAAGTTATTAGCTTTGTGTTCCTTCTCATTGATGGTCAGCAAGATACCTTCATCCAGAGACATTGATTCATTCATATTACGTCTAGACAGAATACCGCGAGCGTTTTCTGGTTTAGAGAATATGTGGAAACGGTTGGATACCGTGACCAATGAATTGTGGACTTGGATGGAGATTACTGTGTTGAAGCGTGAGAATGTAATTCCGCGTTCTGATATCCTTGATTCTGTTAGTAAGTGGGAAAATGACCTTGAACAGTTGTTGACTCTTCAGAAGCATCGAGAGATTCAATCGAGTCTCGAGACGCAACATGCCGCAGGGAGAATGTATTCCGAAGGGATACGTCTTATGCGTGTGTGTAAAGATCTGAACCTTTCTAAGGGAAACACCGAAATCATCGCCCGAAATTTACCAGCCGCAAAACTTCTGTTAACGGAAGCTAACATGAGTGGTGCGGACAAATCAAAATTACGAACTGAACCTGTCATTGTTTGGTTTTCCGGAGCTTCTGGCAACGGAAAAACTGGATTATCTTACCCGTTCATATTAGATATGATGCGAGTATATGGTGATCCACCGAGCACGTGGCAGCAAAATGTGTATGCAAGAGAGCCTGAGACAGAATATTGGGATGGTTATATAAATCAAGAGTATATTGTCTATGATGACTTTATCCAGATTAAGGATTCACAATTGAAACCTAATCCGGAGTTGTTTGAGATGATACGCTTAGGAAATATGTTTCCGTACCAATGTCATATGGCTTCCTTGCTTGACAAGAACAATACTTTTGCCGAACCGAAATTAATATGTTTAACTTCTAACTTACAACGTTTACAAATTGAATCACTAAACTGCCCCGAAGCTGTATCCCGTCGTATAGATTTTGCTTTTAACGTTAGAATTATTCCAGAATATCAAATGGAATATACTAGCGCTAATGGCGACAAGCTATATAGATTGGATGCTGCGAAGGCAAGACGTGATTTTGGAGACGTTCTTTGTTTTGAAGTATATAGATTTGACATGTTTGATGCCTCTAGTCGCCGTGATATTTTGACGGACCTAACTTACACCGAAATGGTTAAGTTATGTCAAGATAAAATGCGCGACAGAGCTTCGAATTTTACCGACTATGCCAATTTCTTAGAATCGTACAGGAATAAGGGGGTTGCTCAAGTTGAGAAACCCAAACATGAAACTGACGATTATAATGGAGAGACCATGATTTTTACATCTACTGCCCAAGTGCATTTAGAGGACATTACTAATCTAGTAGTGCCACAACCTAGCTATTTTAAGCGTTTATACTGGAATATGTGTAAACAATATTATAGTACAAAGTTGTGGCTTACTGGATCAGATACTAGTGTCTTTGAGATGTTACTTCTCGGTGATAGAGATGGCGCTTATGACAAGTGCCTCGCTATTGTTAGAGAAACTAGATGTGAATTGAACAACATGATTAATAGGGAAGCAGAAGTTATTAAAAGTGTCTTTGGGAATTATTGGCCACTCTTTAAAGCTTGTGCGGGTGCTGCAATTGGTGCGTTTTCGCTTTATTTTATTCTAAGGAAGAAAAGCACACCAGTTACGGCCTTTGTTGCGAGTAATAAAGAGCTAATGGAAACTATGAAGAAAGCAAATGAGTGTTTAGATAATGAGTGTAAGCATTGTAAAAAATGCTTGCATAAAAATGTAGATCTGTGCGTGAAATGGTACACAAAATGCCATTGCTACGCGCTACAGATGGAATCTGCACAAATTAATCTTAAATACTACGCTGCTGCTGCTATGTATCAAGAACCCGAAATGAAAAAAGAACGCGACCGATGCGTAGAATTATTATCAATAATTGATCAATTGTGTAGTTGTGACTGCGCAAATTGTGATGCTTGTTGTGATGATTCTCTCGCTGAAAAGTTTGAAAATGTCATCAAAGTTTATGAGATGCCATGTGTCTGTGTGTGTGCTCGTCTATCACAAGGATTTGATATGATTGAGTTACTAGCACTAATAAAACATTGTGGCACCTTAGAACCAACACCAATTTTGAACCCATATTTACGTAAACTAAGCGTTAAACTATCCGCAGACGTAAGAGATTTCGAAAGAACAGCAGATTATGAACAACTGCTGAACACTCTTCAATCTCAGGAATACGAAGGAGACGTTAAACCGCAGACGATACGTAAAGTAGCAATACGTTACCAATCTCATGATGATGATACCAACATGCGATTGCGTAAAGTGTTGCCTCGCGTTAAATACCAAACAGAAATTACTACAGACGAAACCCGTAGCGTGAGCTCCGCGAAAGAGAGCACCCATATCGACAAAGTGACTAACAATATTATGATAGACGAACAACGAGCTATGCCAGAGATGGATAAATCCGTTGAAACTATAGTAAACCATGTTGTATATCCTAATACAGTATATATGACAGCCAACAAGAATGACGGCAAACAAGCCAACATTGGACACATAATATTTGTGTGCGGCCAAGTTGCCTTGATGCCCTATCATTATAAAGTTGCTATAGAGGAACGAAATTATTCGTCCGTGAATTTATATTCACGTCAATTGATTGGTTCTAAAATACCTGTCTCTGTGTTTGATACATTCGTACGCATCCAAGGAAAAGATGCCATGCTTGTAGCATTCCCAGTTACAGTTAATAGTTTCAAAAATATTGTTAATCATTTTGTGGATATTCAAAACTACCCCCTAGTGCCGTCATGTCCCGGCATACTCGCTAAGTACTATTTTGCTAACTCTGAGACGGAGAAATCTAGAGTTTGCATTAGTGCTATCGGCGTGTCGGAACGTGATGAAGTGGACGTCATGTCTGTCCCTGGATGTATGGAGGTGGTACGCAATAGAGATTTCTACACATACACCGCGCCAACCCGCGCTGGTGATTGTGGTGCAGCTCTTTGCGTTGCCAACACGTGCATACAGGGAAAGATAGTCGGAATACATGTATCCGGCGTAGAAGGGCTATGTAAAGGCAATTCTTCCGCGATAACCAAGCAAATGATAGAAGAATCATTGAAGAAAATGCCGAGCATTGCTCAATACGCATACCCATCCTCTGAACTAACCGTTGAAATGGACGTGTTAGAAGAGAGTGGAGCATTTGTATTACACAAATATTTGCCAGGGGTTTCTATAGGTACAACCATGCAGACTGCCATTAAACGCTCTCCAATTCATGGCGAACTTATAGAATCTCCGAACAAACCAGGACCGCTTGGACCCTTTAAATTTAGAGGGACCATGGTCGATCCGCGTGTGTTACAACGGAAAAAATATGGAAAACCACGTCCGGTTATCAACCAACAAATAGTAGATGATATTAGAGACGGTTTAAAACCTATTTATTATCAATCCCACGAATACGAACCTGAGTACTACAAATATCCATTAACTTTTGATCAAGCAATATTGGGTATAGATGGTGATCCGTTCATTAATTCACTGGATCGTAATACAGCACCTGGCTTCCCCTTTTCTACACGGAGAAATGGAAAGAAAGGAAAAACGTTGTGGTTTGGAGACAGTATGGAATACGACCTTACTGGACCACACGCGATGGCATTACGACAGGAAGTTGAAGAATTGGAATTATCTATACTCAATGGTGTTAGACCTGAAGTTGTATGGACCGATACTTTAAAAGACCAGAAAATACCTGTAGCTAAAGCAAACGCTGGTAAAACACGTTTGTTTTCAGCAGCGCCAATGCATTATGCAATAGCTCTGCGGAAAGTGTGTGCCCCTTTTGTTGCTCATCTATCACGGATGCGTATTAGAAATACGATCTGTGTGGGTGTGAATCCGTTCTCATGCGAATGGAGTGCGATAGCACAAAAATTGTCATCGAAGGGACACCATGTTATAGCTGGAGATTATTCTAATTTTGACGGTTCATTACCTGCTCAACTAGTCTACGCGGCAACTGAAATAATGGCAGACTGGTATGACGTTCATTGGGAATACGTTGAAGCTCACAAGCGTAATATCGTTGGAGGCAATGTATTAGGAAAGCCAGAATTTCTTATGTACTTGCGCCGATTATATTATGAATGTGTACATCATTTACATATTATGAATTTTAAACAAGGTTCGCTTATGTATTATGTTCGCAACGGTATACCCTCTGGATGTCCAGTTACTGCGCCATTAAATTCAATTGTCAACTTAATGGCATTAATCTATTGTTGGTATCATATAATAGATGATCCACTCAAGCAAAATGTTAAAGAGTTTTTTGAACACACCTCGAGTGTTTTTTATGGAGACGACTTCGTAATGAACATCCGAGCAGATGTATTGGAGAGATTCAATCAGATAACGATAACACAAGCTATGAGTGAACATTTAGATATGACTATGACAGATGAAGCCAAAACGGGTGAGTGTATTAAATCTAGGACACTAAAGGAAGTTAACTTTCTCAAACGTGCTTTTTATTATAATACGCTTATCCAAGAGTACACCGCACCGTTGGACCTCACGGTTATTTTAGATTCTACGAATTGGTATAAAATCGGTAAAAGTTCTGCTATAATAGTGGCGCGTGATACGCTCAAAGCGTGTTTACGTGAATTAGCTTTACACCCGGAACATGTCGATTTACAATATCGTAATAAAATAACAGATCTAGGTCTTCGCGTTACTAATTTAATTCCAGGAGAGTTATTTGTGCCTGATACAAGGTACTCGACGCTTCTTGCTATTAAGAATATGGAATGTGAAAATTTAGGTTTGGACTGTGACACTTAAGATAGTCTAATTAGAAAACCACGTAATTGGGTCAATCCGTTAATACCGGTCTACCAAGCCCTGGAAATTTCTAGTAATCTAATAAGTGCAACACCGCATCTACTCTAAAATCGATATTTGATATCATTAGTCTAATTAACAAACCACGCAACTATGTCAATCCGTTAATACCGGTCCAATAGGCCCTGGAAATTAGTAGTAATTATTATTATACGTCAACCCTGCTCATTGGTTTAATTGAGCACTTATGTTGCTATGTGATCTTGCATAATAAATGCTGACGTGAAAACGTTATGCACTGCTGTAGCAATAGGTTAGCTATTTAGCTTTACTAATCAAGACGCCATCGTGCAGCCCACAAAAGTCTAGATACGTCACAGAAGCACATACGCTAGGTCGCGTTGATGCTTCTCATACATGACCTGCAAATATAAATGAAAACGTAACAACCAAAACACAACAACAAATCCTATCTTTCAGCTCCGAAGGTGAAGCCCCGTCGTCGTCTACCGTTTTAGCCCCGCTCAAATTGCAAAATCCAATTCTGGATTGTGCAAGGGATGGAAAGACTCATACAGTCAATTCATTCCTTGAACGGCCTATTAACTTTAGAACGGCTACGTGGAGTAATCAAGCTGTTGGAAGTAGGTTATTTTCTTTTAACTATCCTTCGGATGTGGTAAAGAATCCAATGTATAGTAGAAAATTACAAAATTTTCTTGGTTTGCGAGCTGATTTAGTTGTTCGCGTTCAAGTCAACGCACAACCATTTCATGCTGGTAGACTAATGCTATCATGGACCCCTTTTCTTAATTCGTTGGGTGCTAGTAGAAAATATTACTATACCAATCCTACATCGCCGTTTTTAACCTGTATTAGTGGTAATCCTCGTGTTGAAATAGATCTATCTACTACAACTGAAGCTACCATGACTATACCTTTCGTGTCTCCTTTCCTATACTATAATCTGGTGACGGGAACTGGCGATATTGGAACTTTCCAATTAATCGTCTATTCTCCGTTAGTAGATTTGGTATCTGGAGGGAACATAGACTACACAGTATGGGTTAATATGACTAATGTACGTACCGAATTTCCTACTGGTATGCCAACTTCTACCGCGCAAGTGGGGGAAGAGGGTAAACAACAACAGAAGCAAGGTTTTGTCACACGCCAGGCCGAGGCTTATTCTACTATTATGGAACCACTCACTAAGATACCAGGAGTAGGCCAATTAATAGGATATGCCAAGTCGGGCGTTGACGCTTTGCATGCTGTTGCTGCGACCCACGGTTGGTCAAAACCACTTAATCCTGCGGACATGCAATTATTCAAGCAAGCACCATCTCGGTTTATGTGTAATTCTGATGGTTCGGATATGGCAACTAATTTGGGCTTAACAAGCCAAAATGAAATTGAGCATCTCCAATCGTTGTTTCGCACAGATTCTGATGAAATGTCTGTAGATTACGTGGCTAGAACATATAACTATGTAGGAAGATTTGACTGGAAGAAGGGAGATAGTCCAGGTACTATTCTTTATAATCAAGTTGTTTCACCTACAGCTTGGTTCTCTAGGATTGGTATTACTGGATTGTCTATTCCTCATTTATATTTTGCCGCTTCAAACTTCGTGTTATGGCGCGGTGGTATAAATGTAAAACTAAAATTCGTCAAAACAAAATTCCACTCAGGTCGTATACGTATTATATACGTACCCGGCTTTTTCGGTGGGGTTTTACCCGTTGGATTTGAAACTGACGCTAACTATTCTACTGTGGTAGATATTAGATCTGACACAGATGTAGAATTTAACGTCCCTTACGTGGCCACTGTGCCTTGGTTGCATATCAATTCCACTCCATGGGTTACTAATTTTAACCAAACTCATGCTTGTGGATCGATTGTAGTCGAGGTTCTCAATGAACTCGTAAATACATCTACTGTATCTGATACTATCGAAGTTATTGTTGAAGTGTGTGCTGCAGAGGATATCGAATTCGCTATCCCTATAGTACCCGCTTTAGCACTTCGTGCGCCACCTAATAACGCAAGTAATAAGGGTGTTTTGGACATTATTACAAGCATGGCACAGGTAGGAACAGATACAGGTGATACACCATCAGAGGTAGCTCGTGAAGAACCAACAACTTTTAACGAGGTGCCGTTACAACCAACTACGACAACATATAACGCATCTATGCTGATGATGGGTGAGAAAGTTACTAGCTTTAGACAGCTTATAAAGCGGTTTTCTGCTATAACACCACCCACGCAGAATAGATATTGGGAATTCAAACAACCTTTTTGGATTAATCCAAATAGGTTCGAAGGAATAACAAGTGAGGGTACGTATGATATCGACGGTATCTCATGGTTCGCAAGCTTATATGCATTCTATCGAGGTAGTATGAGATATAAGATCGCGCCTATCAGTAATACTTCACCCCTTGTTGTAGCCCTTAAACCCAACTCCTTATATGCCGGTATTCGAACTATCGACATAAACGGTACTTGGGAATATCCCGACTACAAGGGTGCAGAAGTATTTATGACACCGAATGAAGGAATACATGAGTTGAGCATTCCATACTATAGTTCCTATCCCGTAACTTTAACTACGTATAACACTAGTGGTTCTGACGTACTTGATGCTAGAAACGGTTTTAATCGTGTTATAGCTCGGTTTCATCAGGACACTAATGCTTACGTATATAGGGCGGCGGGAGATGACTTTAGTTTTGGATTCCTCCTCGGACCTCCTATAGTGAACCACGCATCCCCACAGCGTTCGTCTGGTACGCGTTAGTTACCATCAAGTTTATAGTCTTGTTAAAACTATACGTCTGATATGCGTTAATTATCAAGTGAGTAGCTATCTCGAATTAAAATAGCCGTCCAGTGGAACGTATCTACTTGACTTACAAACCAATACGAAGGATAAGAGTATTCGTCGCATTTGATTTTAGCGTCGCTAGGCCTAGTTTGTAAGTTAATCTAATTATTATTAAGGACCAAAAAAATATAAAATACAAAATACAAAAATATTTAGCATTAGTTAATTTTAGGAAATAATTTTAGATAAGCCTGGCGCGCCAAAATTGGAGTTTAAAGACCCTATAAAAATGCTGGCGTTATACACCCCTTGTTCCTTCGAGGCGGGCCCTCATGTGTTCCACATGCAGACTTAAAGAAGTCTACCCCTGGCCCGTCCGGGGGATCTAAGTTTTTATCAGTTTTCTTAGACTCAGCTATTAGCTGAGAGGCGTAACTGTTACTTTATGTCTGGCGAACATGAGAGGTGCTGTAATGTCATTTTTCGTCAAAAAAAAA'} 

r = requests.post(url, payload) 

print r.content 

Est-il possible d'actualiser les données que vous récupérez d'une soumission de page en Python?

EDIT

Merci beaucoup pour le conseil sberry, j'ai vérifié la page de chargement et trouvé cette forme cachée. La première page de chargement attend 3 secondes avant de rafraîchir, puis la deuxième page de chargement attend 8 secondes et la troisième 13 secondes, il semble donc que je vais devoir poster et vérifier le résultat plusieurs fois. Maintenant, je dois juste comprendre comment faire cela.

<div id="display">Please wait while your data is being prepared...<br>RID = VGCR81NG014</div> 
<div id="counter">Page is refreshing in <span id="seconds">8</span> seconds</div> 
</div> 
<form id=_refresh action=http://www.ncbi.nlm.nih.gov/Structure/cdd/wrpsb.cgi method=POST target="_self"> <!-- the form to submit for refresh or redirection --> 
<input name="dhandle" type="hidden" value="QM3-data_cache-22B43E7AD59D887C-51B832F442D7"><input name="output" type="hidden" value="html"><input name="wait4blast" type="hidden" value="10"><input name="mode" type="hidden" value="rep"><input name="data" type="hidden" value="ftable"><input name="gwidth" type="hidden" value="-1"><input name="loading" type="hidden" value="true"> 
</form> 
+0

Je n'ai pas le temps d'écrire un exemple de travail, mais au fond, vous devez demander comme vous, lisez la réponse, trouver les valeurs cachées sous la forme sur cette page, utilisez ceux poster à nouveau, et interroger pour le résultat. Si cela n'a toujours pas été répondu dans quelques heures, je vais écrire un échantillon. – sberry

Répondre

3
import time 
import webbrowser 

import requests 
import lxml.html 


session = requests.session() 
url = "http://www.ncbi.nlm.nih.gov/Structure/cdd/wrpsb.cgi" 
form_data = {'seqinput': '......'} 

try_count = 0 
while True: 
    try_count += 1 

    print 'Request....' 
    r = session.post(url, form_data) 
    with open('{}.html'.format(try_count), 'wb') as f: 
     f.write(r.content) 

    root = lxml.html.fromstring(r.content) 

    form_data = {input_.get('name'): input_.get('value') for input_ in root.cssselect('#_refresh input')} 
    if not form_data: 
     break 
    form_data['tick'] = '10000' 

    print 'Wait for 10 seconds.' 
    time.sleep(10) 


print 'Done' 
rid = root.cssselect('#div_search_info table.searchdata tr:nth-child(1) td:nth-child(2) strong')[0].tail.strip() 
webbrowser.open('http://www.ncbi.nlm.nih.gov/Structure/cdd/wrpsb.cgi?RID=' + rid) 
+0

Besoin de [lxml] (http://lxml.de/). – falsetru

+0

falsetru MERCI BEAUCOUP !!!!! Cela a fonctionné parfaitement !!!!! –

Questions connexes