0
我一直在制作一个简单的刮刀,使用美丽的汤根据用户输入的邮编获得食品卫生评级。该代码正常工作,并正确地从URL中获取结果。Python - 显示来自所有页面的结果不仅仅是第一页(美丽的汤)
我需要帮助的是如何让所有结果显示,而不仅仅是第一页的结果。
我的代码如下:
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
我已经通过查看网址发现,显示的页面是依赖于所谓的页面
https://www.scoresonthedoors.org.uk/search.php?award_sort=ALPHA&name=&address=BT147AL&x=0&y=0&page=2#results
分页代码的URL字符串变量Next Page按钮是:
<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>
有没有一种方法,我可以让我的代码,找出输出H多页结果呈现,然后从这些页面中获取结果?
最好的解决方案是让代码改变URL字符串以每次更改“page =”(例如for循环),或者有办法使用分页链接代码中的信息来查找解决方案?
非常感谢的人谁提供帮助或看这个问题
scrape_page函数是您的原始代码。它可以使用一些工作。只要确保这个功能已经建好。其他一切都已准备就绪。有关此代码的任何问题,请告知我。 –
感谢Philippe,此代码工作完美。 –