-1

そこで、お気に入りのサイトの 1 つから映画の評価を取得するプログラムを Python で作成しています。

レビューへのリンクの例: http://timesofindia.indiatimes.com/entertainment/movie-reviews/hindi/Madras-Cafe-movie-review/movie-review/21975443.cms

現在、string.partition コマンドを使用して、評価情報を含むソース HTML コードの一部を取得しています。ただし、この方法は非常に遅いです。

映画の評価を得る最も速い方法は何ですか?

私が使用しているコードは次のとおりです。

#POST Request to TOI site, for review source
data_output = requests.post(review_link)

#Clean HTML code
soup = BeautifulSoup(data_output.text)

#Filter source data, via a dirty string partition method

#rating
texted = str(soup).partition(" stars,")
texted = texted[0].partition("Rating: ")
rating = texted[2]
#title
texted = texted[0].partition(" movie review")
texted = texted[0].partition("<title>")
title = texted[2]

#print stuff
print "Title:", title
print "Rating:", rating, "/ 5"

ありがとう!

4

1 に答える 1

1

次の例では、リクエストを使用して html を取得し、lxmlを使用して html を解析して評価値を取得し、reを使用して実際の評価を数値として抽出します。

import re
from lxml import etree
import requests

URL = "http://timesofindia.indiatimes.com/entertainment/movie-reviews/hindi/Madras-Cafe-movie-review/movie-review/21975443.cms"

response = requests.get(URL)

parser = etree.HTMLParser()
root = etree.fromstring(response.text, parser=parser)
rating_text = root.find('.//div[@id="sshow"]/table/tr/td[2]/div[1]/script[1]').text  # prints fbcriticRating="4"; 
print re.search("\d+", rating_text).group(0)  # prints 4

ここで使用する必要はありません。代わりにrequests使用してもかまいませんurllib2。これは単なる例です。主な部分は、html を解析して評価値を取得することです。

それが役立つことを願っています。

于 2013-08-26T18:09:38.633 に答える