2017-01-04 13 views
2

私はpython3でウェブをスクラップするのが初めてです。私はドバイのすべてのホテルのレビューを掻き集めたいのですが、問題は私がURLで説明しているホテルのレビューだけを掻き集めることができることです。私はどのように私は暗黙のうちに各ホテルのURLを与えることなく、ホテルのレビューをすべて取得することができます私に示すことができますか?レビューの投稿フォームtripadvisor

import requests 
from bs4 import BeautifulSoup 


importurl = 'https://www.tripadvisor.com/Hotel_Review-g295424-d302778-Reviews-Roda_Al_Bustan_Dubai_Airport-Dubai_Emirate_of_Dubai.html' 
r = requests.get(importurl) 
soup = BeautifulSoup(r.content, "lxml") 
resultsoup = soup.find_all("p", {"class" : "partial_entry"}) 
#save the reviews to a test text file locally 
for review in resultsoup: 
review_list = review.get_text() 
print(review_list) 
with open('testreview.txt', 'w') as fid: 
    for review in resultsoup: 
     review_list = review.get_text() 
     fid.write(review_list) 

答えて

2

すべてのホテルのインデックスページを見つけ、すべてのリンクをリストに入れて、URLリストをループしてコメントを得るよりも、アウト

import bs4, requests 
index_pages = ('http://www.tripadvisor.cn/Hotels-g295424-oa{}-Dubai_Emirate_of_Dubai-Hotels.html#ACCOM_OVERVIEW'.format(i) for i in range(0, 540, 30)) 
urls = [] 
with requests.session() as s: 
    for index in index_pages: 
     r = s.get(index) 
     soup = bs4.BeautifulSoup(r.text, 'lxml') 
     url_list = [i.get('href') for i in soup.select('.property_title')] 
     urls.append(url_list) 

len(urls): 540 
+1

これはホテルの完全なリストではありませんが、最初のページのみからホテル:18ページ以上がある..あなたが得ることができる場合は、この@Andersson – Andersson

+0

は、一例であり、 1ページ、ループを使用して18ページを取得するだけです。 –

+0

しかし結果のページ番号はありません。 'URL'は常にhttp:// www.tripadvisor.cn/Hotels-g295424-Dubai_Emirate_of_Dubai-Hotels.htmlとなります。どのページであっても1番または19番... – Andersson