2017-10-05 1 views
0

Je veux obtenir tous les liens de chaque article de cette page des résultats de recherche: https://www.ncbi.nlm.nih.gov/gds/?term=lung+cancerObtenir des liens url de résultats de recherche de GEO DataSets en utilisant la pagination

Mais j'ai problème à obtenir l'url de la page suivante. De <div class="pagination">, il dit:

<a name="EntrezSystem2.PEntrez.Gds.Gds_ResultsPanel.Entrez_Pager.Page" title="Next page of results" class="active page_link next" href="#" sid="3" page="2" accesskey="k" id="EntrezSystem2.PEntrez.Gds.Gds_ResultsPanel.Entrez_Pager.Page">Next &gt;</a> 

donc j'ai utilisé urllib python pour récupérer l'URL de la page suivante afin d'utiliser BeautifulSoup pour obtenir son contenu:

param2=urllib.urlencode({'sid':3,'page':2,'accesskey':'k','id':'EntrezSystem2.PEntrez.Gds.Gds_ResultsPanel.Entrez_Pager.Page'}) 

f2=urllib.urlopen('https://www.ncbi.nlm.nih.gov/gds/?term=lung+cancer',param2) 

soup2 = BeautifulSoup(f2.read(), 'html.parser') 

Maintenant, le problème est, même si je changer le numéro de page de 1 à 10, je reçois toujours le contenu de la page 1. Quelqu'un peut-il me dire ce que j'ai mal fait?

Répondre

0

Vous devriez envoyer beaucoup de données (en faisant une requête POST) afin d'obtenir la page suivante. Utilisez les outils de développement dans n'importe quel navigateur pour vérifier quelles données vous avez besoin d'envoyer.

enter image description here

(pas toutes les données est affiché)

+0

Désolé, je ne comprends pas bien, voulez-vous dire que je dois essayer plusieurs combinaisons de deviner l'URL correcte? – paladin

+0

Je veux dire que vous n'avez pas besoin de construire une URL 'magique' pour récupérer vos données, mais il semble que vous deviez explorer une énorme quantité de données à envoyer dans 'param2'. À mon avis, il sera très facile d'utiliser Selenium ou un outil similaire. –

+0

Oh merci, je vais essayer de jouer avec eux un peu. – paladin