AttributeError: 'unicode' object has no attribute 'xpath issue
AttributeError: 'unicode' object has no attribute 'xpath issue
我正在尝试通过 xpath 捕获“//html/body/table/tbody/tr/td[2]/table/tbody/tr[2]/td[17]/font”中的值。我不确定我做错了什么但是当 运行 下面的代码时我收到错误消息 "AttributeError: 'unicode' object has no attribute '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()
您似乎忘记了解析响应正文。
您需要在某处实际使用 lxml.html
解析器才能使用 XPath 表达式:
def extractfailure():
loginpage = html.fromstring(login())
fail = loginpage.xpath('/html/body/table/tbody/tr/td[2]/table/tbody/tr[2]/td[17]/font')
print fail
考虑到如果文档中缺少元素,浏览器会插入 <tbody>
元素。 LXML 不会插入这些,因此您的浏览器源 XPath 表达式可能是错误的。
对于那些在使用 xpath 时得到以下输出的人
[<Element font at 0xeee158>]
这是因为您没有提供 text() 来使用如下所示的 xpath 捕获文本
//html/body/table//tr/td[2]/table//tr[2]/td[17]/font/text()
感谢@Martijn Pieters
,我的问题现已解决
这是完整的代码
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
我正在尝试通过 xpath 捕获“//html/body/table/tbody/tr/td[2]/table/tbody/tr[2]/td[17]/font”中的值。我不确定我做错了什么但是当 运行 下面的代码时我收到错误消息 "AttributeError: 'unicode' object has no attribute '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()
您似乎忘记了解析响应正文。
您需要在某处实际使用 lxml.html
解析器才能使用 XPath 表达式:
def extractfailure():
loginpage = html.fromstring(login())
fail = loginpage.xpath('/html/body/table/tbody/tr/td[2]/table/tbody/tr[2]/td[17]/font')
print fail
考虑到如果文档中缺少元素,浏览器会插入 <tbody>
元素。 LXML 不会插入这些,因此您的浏览器源 XPath 表达式可能是错误的。
对于那些在使用 xpath 时得到以下输出的人
[<Element font at 0xeee158>]
这是因为您没有提供 text() 来使用如下所示的 xpath 捕获文本
//html/body/table//tr/td[2]/table//tr[2]/td[17]/font/text()
感谢@Martijn Pieters
,我的问题现已解决这是完整的代码
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