获取特定Windows Phone Marketplace游戏的所有评论

时间:2012-05-05 14:28:11

标签: windows-phone-7 web-crawler bots marketplace app-hub

AppHub是否允许我们立即查看来自所有市场的应用评论?因为我没有找到任何东西,所以花了一些时间写一些代码将它们全部打印在一个文件中,所以我不会浪费时间在每种语言中寻找它们。

我很感激任何更好的解决方案。在最糟糕的情况下,我很高兴与任何发现它有用的人分享代码。

它使用BeautifulSoup。 唯一的参数是应用程序的ID,如下所示:

wp7reviews.py 62289160-6970-4674-85a0-aef3dbe3f93d

这是代码

import sys
import getopt
from urllib2 import URLError
from urllib2 import HTTPError
import urllib2
from BeautifulSoup import BeautifulStoneSoup

opts, extraparams = getopt.getopt(sys.argv[1:], '') 
# starts at the second element of argv since the first one is the script name
# extraparms are extra arguments passed after all option/keywords are assigned
# opts is a list containing the pair "option"/"value"
#print 'Opts:',opts
#print 'Extra parameters:',extraparams

try:
    appid = extraparams[0]
except:
    #Awsome Linkit appid as default appid
    appid="62289160-6970-4674-85a0-aef3dbe3f93d"

allreviewsFILE = open("allreviews.txt", "w")

def output(text):
    allreviewsFILE.write(text)
    #print text,

def outputln(text):
    allreviewsFILE.write(text+'\n')
    #print text


def geturl(lang):
    return "http://catalog.zune.net/v3.2/"+lang+"/apps/"+appid
try:

    request = urllib2.Request(geturl("en-us")) 
    fd = urllib2.urlopen(request)
    content = fd.read()
    fd.close()

    soup = BeautifulStoneSoup(content)

    try:
        outputln("App title: "+soup.findAll("a:title")[0].string)
        outputln("");
    except:
        print "Failed to get App Title"

    langs = ["en-us", "en-gb", "de-de",
             "fr-fr", "es-es", "it-it",
             "en-au", "de-at", "fr-be",
             "fr-ca", "en-ca", "en-hk",
             "en-in", "en-ie", "es-mx",
             "en-nz", "en-sg", "de-ch",
             "fr-ch", "zh-hk", "zh-cn",
             "en-hk"]

    outputln("Here we got reviews from each marketplace")
    for lang in langs:
        request = urllib2.Request(geturl(lang)+"/reviews")    
        fd = urllib2.urlopen(request)

        print "Fetching "+lang+"...",
        content = fd.read()
        fd.close()
        print "OK"

        soup = BeautifulStoneSoup(content)
        #print soup.prettify()

        contents = soup.findAll("a:content")
        ratings = soup.findAll("userrating")

        l = len(contents)
        if l > 0:
            outputln("-----------   "+lang+"   ---------------------------------------------------")
            outputln("")
        for i in range(0, l):
            output(ratings[i].string+"/10 - ")
            if len(contents[i].contents) > 0:
                try:
                    outputln(contents[i].contents[0])
                except:
                    outputln("*** Unknown chars ***")
            else:
                outputln("Rating only")
            outputln("")

except HTTPError, e:
    print("Error during request!\n")
    print("Cod.: ", e.code)

except URLError, e:
    print("Invalid URL!\n")
    print("Message: ", e.reason)

2 个答案:

答案 0 :(得分:1)

已经有一个网站可以为您提供此信息。看看http://wp7reviews.tomverhoeff.com/

答案 1 :(得分:1)

还有一款名为AppTracker的免费WP7应用,可让您跟踪来自不同地区的评论,并将其翻译成您的母语