0

我创建了一个 python 解析器,它将访问一个网页,然后从源内部的 div 中获取信息,就像一个小 API。但是对于不同的帐户,会有更多的 DIVS,它会作为错误的读数返回。

每当我进入管理员帐户时,它总是显示 {"PlayerExists": false}。

我的代码:

if 'PlayerName' in self.request.GET:
            self.response.headers['Content-Type'] = 'application/json'
            docType = '{http://www.w3.org/1999/xhtml}'
            PlayerName = self.request.GET['PlayerName']
            gamertagava = self.request.GET['PlayerName']
            output = {}
            try:
                msPageHandle = urllib.urlopen('http://nflplayers.mobi/'+PlayerName+'.html')
                msPage = msPageHandle.read()
                msPageHandle.close
                parse = ET.fromstring(msPage)
            except:
                output['PlayerExists'] = False
                self.response.write(json.JSONEncoder().encode(output))
                return      
output['AdminTeam'] = parse.find('.//*[@id="AdminTeam"]')   
output['AdminLaunchTeam'] = parse.find('.//*[@id="AdminLaunchTeam"]')   
output['Old Skool Player'] = parse.find('.//*[@id="Old Skool Player"]') 


            output['PlayerName'] = parse.find('.//*[@id="PlayerName"]').text
            output['Playerscore'] = parse.find('.//*[@id="Playerscore"]').text
            if output['Playerscore']=='--':
                output['PlayerExists'] = False
                output['Playerscore'] = 0
            else:
                output['GamertagExists'] = True
                output['Playerscore'] = int(output['Playerscore'])

管理员有一个额外的 DIV,所以我不知道这是否是问题所在。就是这样。欢迎任何帮助。

 <div id="AdminTeam">
        <label>Admin&nbsp;Team</label>
        <div class="Badges">

            <div id="AdminLaunchTeam" class="Badge"></div>

            <div id="Old Skool Player" class="Badge"></div>

        </div>
    </div>

谢谢。雷米

4

1 回答 1

0

在您的 XML 中,没有与这些 XPath 表达式匹配的元素:

.//*[@id="PlayerName"]
.//*[@id="Playerscore"]

所以这一行会抛出一个错误:

parse.find('.//*[@id="PlayerName"]').text
于 2012-11-02T08:59:24.613 回答