ユーザーが入力した郵便番号に基づいて美しいスープを使用して簡単なスクレーパーを作成してレストランの食品衛生評価を取得しました。コードは正しく動作し、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文字列内の変数に依存していることがURLを見て、発見しました[次のページ]ボタンは次のとおりです。
<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関数は元のコードです。それはいくつかの仕事を使うことができます。この機能がうまく構築されていることを確認してください。他のすべてはかなり準備ができています。このコードに関する質問は、私に知らせてください。 –
ありがとうフィリップ、このコードは完全に動作しています。 –