J'ai fait un grattoir simple en utilisant Beautiful Soup pour obtenir la note d'hygiène alimentaire des restaurants en fonction du code postal saisi par l'utilisateur. Le code fonctionne correctement et prend les résultats de l'URL correctement.Python - Afficher les résultats de toutes les pages et pas seulement la première page (Belle soupe)
Ce dont j'ai besoin d'aide, c'est comment afficher tous les résultats, pas seulement les résultats de la première page.
Mon code est ci-dessous:
import requests
from bs4 import BeautifulSoup
pc = input("Please enter postcode")
url = "https://www.scoresonthedoors.org.uk/search.php?name=&address=&postcode="+pc+"&distance=1&search.x=8&search.y=6&gbt_id=0&award_score=&award_range=gt"
r = requests.get(url)
soup = BeautifulSoup(r.content, "lxml")
g_data = soup.findAll("div", {"class": "search-result"})
for item in g_data:
print (item.find_all("a", {"class": "name"})[0].text)
try:
print (item.find_all("span", {"class": "address"})[0].text)
except:
pass
try:
print (item.find_all("div", {"class": "rating-image"})[0].text)
except:
pass
J'ai découvert en regardant l'URL que la page affichée dépend d'une variable dans la chaîne URL appelée la page
https://www.scoresonthedoors.org.uk/search.php?award_sort=ALPHA&name=&address=BT147AL&x=0&y=0&page=2#results
Le code de pagination pour le bouton Next Page est:
<a style="float: right" href="?award_sort=ALPHA&name=&address=BT147AL&x=0&y=0&page=3#results" rel="next " title="Go forward one page">Next <i class="fa fa-arrow-right fa-3"></i></a>
Y at-il un moyen de trouver mon code h Combien de pages de résultats sont présentées, puis récupérez les résultats de chacune de ces pages? La meilleure solution serait d'avoir du code qui change la chaîne d'URL pour changer "page =" chaque fois (par exemple une boucle for) ou est-il un moyen de trouver une solution en utilisant les informations dans le code de lien de pagination ?
Un grand merci pour tous ceux qui fournit de l'aide ou se penche sur cette question
La fonction scrape_page est votre code d'origine. Il pourrait utiliser un peu de travail. Assurez-vous simplement que cette fonction est bien construite. Tout le reste est à peu près prêt. Des questions sur ce code, faites le moi savoir. –
Merci Philippe, Ce code fonctionne parfaitement. –