私はユーザーの観点から最高の10のホテルを表示したいと思います。ユーザーが 'プール'を入力し、私はtripadvisorからのユーザーのレビューでキーワード 'プール'を計算してから数を取って、カウントに応じてトップ10のホテル名を表示しなければならないとします。この目的のために、私は現在、ホテル(dubai)のすべてのレビューを解散しています。そして、私はキーワードとマッチし、トップ10のホテルnames.butを表示するスクラップは私が何をすることができますか?どんな助け?こする以外の任意の他の方法でこのレビューをスクラップための私のコードです:?Pythonでスクレイピングをスピードアップする方法は?
import requests
from bs4 import BeautifulSoup
offset = 0
url = 'https://www.tripadvisor.com/Hotels-g295424-oa' + str(offset) + '-Dubai_Emirate_of_Dubai-Hotels.html#EATERY_LIST_CONTENTS'
urls = []
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
for link in soup.find_all('a', {'last'}):
page_number = link.get('data-page-number')
last_offset = int(page_number) * 30
print('last offset:', last_offset)
for offset in range(0, last_offset, 30):
print('--- page offset:', offset, '---')
url = 'https://www.tripadvisor.com/Hotels-g295424-oa' + str(offset) + '-Dubai_Emirate_of_Dubai-Hotels.html#EATERY_LIST_CONTENTS'
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
for link in soup.find_all('a', {'property_title'}):
iurl='https://www.tripadvisor.com/' + link.get('href')
r = requests.get(iurl)
soup = BeautifulSoup(r.content, "lxml")
#look for the partial entry of the review
resultsoup = soup.find_all("p", {"class" : "partial_entry"})
for review in resultsoup:
review_list = review.get_text()
print(review_list)
ウェブページのキーワードと一致するといいですか?レビューをスクラップしませんか? –
@Hifza ahmadはい、bs4を使わず、単に 'response.text'を得ることができます.regexを使ってすべてのキーワードを見つけるよりもはるかに高速です。 bs4はhtmlコードを解析する最も遅い方法です。 –