AttributeError:'unicode'对象没有属性'xpath问题

时间:2015-07-23 11:35:06

标签: python lxml python-requests

我试图通过xpath捕获“// html / body / table / tbody / tr / td [2] / table / tbody / tr [2] / td [17] / font”中的值。我不知道我在做什么错,但是当运行下面的代码时,我收到错误消息“AttributeError:'unicode'对象没有属性'xpath'”你能帮我吗

import smtplib
import requests
#import bs4
from lxml import html
from email.mime.text import MIMEText


def login():
        url = "http://172.16.3.16/bkg/nimble/newsite_airfail_isimba_dom.php"
        r = requests.get(url, auth=('stats', 'Stats'))
        page = r.text
        return page


def extractfailure():
        loginpage = login()
        fail = loginpage.xpath('/html/body/table/tbody/tr/td[2]/table/tbody/tr[2]/td[17]/font')
        print fail

if __name__ == '__main__':
        extractfailure()

2 个答案:

答案 0 :(得分:1)

您似乎忘记解析响应正文。

在使用XPath表达式之前,您需要在某处实际使用String s="theValue"; out.println("<input type='text' value='"+s+"' name='nameField' id='name' onchange=doSomething('str2','str1')/>"); 解析器:

doSomething(str1,str2)

考虑到浏览器会在文档中遗漏时插入lxml.html个元素。 LXML不插入这些,因此您的浏览器源XPath表达式可能是错误的。

答案 1 :(得分:0)

对于那些在使用xpath时获得以下输出的人

//html/body/table//tr/td[2]/table//tr[2]/td[17]/font/text()

因为你没有给text()捕获带有xpath的文本,如下所示

def extractfailure():
    loginpage = html.fromstring(login())
    fail = loginpage.xpath('//html/body/table//tr/td[2]/table//tr[2]/td[17]/font/text()')
    failoutput = fail
    print failoutput

感谢@Martijn Pieters

,我的问题现已解决

这是完整的代码

ng-init