2017-12-13 21 views
0

私は今、Webクローラーを作成していますが、私はimdbからユーザーレビューを取りたいと思っています。原点ページから10のレビューとレートを直接取得するのは簡単です。たとえば、http://www.imdb.com/title/tt1392170/reviews問題はすべてのレビューを取得することです、私はURLアドレスが変更されていない間に、より多くのレビューが表示されるように "より多くの負荷を"押す必要があります!だから私はPython3でどのようにすべてのレビューを得ることができるのか分かりません。私が今使っているのはリクエストです、bs4。今pythonを使用してimdbの "load more"を押して、より多くのレビューを得る方法

私のコードは:

from urllib.request import urlopen, urlretrieve 
from bs4 import BeautifulSoup 


url_link='http://www.imdb.com/title/tt0371746/reviews?ref_=tt_urv' 
html=urlopen(url_link) 

content_bs=BeautifulSoup(html) 

for b in content_bs.find_all('div',class_='text'): 
print(b) 

for rate_score in content_bs.find_all('span',class_='rating-other-user-rating'): 
print(rate_score) 
+0

以上の負荷」とリストの[BeautifulSoupのサブページのなど、チェックアウトボタンをクリックするなどのオートメーションタスクを実行するPython用 'selenium'と呼ばれるライブラリを、 – Stack

+0

可能な複製を"pagination"(https://stackoverflow.com/questions/37799149/beautifulsoup-subpages-of-list-with-load-more-pagination) – thatrockbottomprogrammer

+1

、またはこのリクエストをchromeネットワークタブから取得したページングに使用できます。http: //www.imdb.com/title/tt0371746/reviews/_ajax?ref_ = undefined&paginationKey = cyi4vu2uxjyffy4ynotlm45pxfmyxwf7xdnnirxpj2oplatil4zhp7rll6tnyzpbo7u5curqcymq2'。 次のページをロードするには、最初のページからページネーションキーを抽出し、上記のリクエストに渡す必要があります。 – Stack

答えて

0

あなたは、クリックイベントを開始せずに負荷以上のボタンを押すことができません。ただし、BeautifulSoupにはそのプロパティはありません。しかし、完全なコンテンツを手に入れるためにできることは、私が以下に示したようなものです。それはあなたのreviewsと一緒にすべてのreview titleをフェッチします:

import requests 
from urllib.parse import urljoin 
from bs4 import BeautifulSoup 

url = 'http://www.imdb.com/title/tt0371746/reviews?ref_=tt_urv' 
res = requests.get(url) 
soup = BeautifulSoup(res.text,"lxml") 

main_content = urljoin(url,soup.select(".load-more-data")[0]['data-ajaxurl']) ##extracting the link leading to the page containing everything available here 
response = requests.get(main_content) 
broth = BeautifulSoup(response.text,"lxml") 

for item in broth.select(".review-container"): 
    title = item.select(".title")[0].text 
    review = item.select(".text")[0].text 
    print("Title: {}\n\nReview: {}\n\n".format(title,review)) 
関連する問題