在链接中过滤信息,在python中?

时间:2013-08-26 18:00:04

标签: python html

所以我正在用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"

谢谢!

1 个答案:

答案 0 :(得分:1)

以下是使用requests获取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并获得评级值。

希望有所帮助。