我试图通过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()
答案 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