判断 <html> 是否包含关键字
Figure out if <html> contains a keyword
我正在尝试弄清楚如何确定我的文档的开始 <html>
标记是否具有带有 Python 的特定关键字。我正在为这个应用程序的另一部分使用 urllib 和 lxml,所以我试图用它来实现它。
我现在拥有的:
from urllib import urlopen
from lxml import etree
def get_amp_path(url):
document = urlopen(url).read()
tree = etree.HTML(document)
html = tree.xpath('//html')
for tag in html:
print etree.tostring(tag)
return
我想要做的是 return 如果开始 <html>
标签包含 amp 关键字,则为真或假,就像这样 <html lang="en" amp>
现在它似乎打印了 html 标签的全部内容,而不仅仅是属性。我如何使它更具体?
etree.tostring()
只是打印节点的内容,在根级别将是整个 HTML。您可以检查元素上的 .attrib
以查看完整的属性字典,或使用 .keys()
获取键列表。
此外,由于 html
应该已经是根元素,您实际上不需要进行 xpath
查找。
假设您只想知道它是否存在,这样的事情应该可行:
def html_has_amp(url):
doc = urlopen(url).read()
tree = etree.HTML(doc)
return 'amp' in tree.keys()
我正在尝试弄清楚如何确定我的文档的开始 <html>
标记是否具有带有 Python 的特定关键字。我正在为这个应用程序的另一部分使用 urllib 和 lxml,所以我试图用它来实现它。
我现在拥有的:
from urllib import urlopen
from lxml import etree
def get_amp_path(url):
document = urlopen(url).read()
tree = etree.HTML(document)
html = tree.xpath('//html')
for tag in html:
print etree.tostring(tag)
return
我想要做的是 return 如果开始 <html>
标签包含 amp 关键字,则为真或假,就像这样 <html lang="en" amp>
现在它似乎打印了 html 标签的全部内容,而不仅仅是属性。我如何使它更具体?
etree.tostring()
只是打印节点的内容,在根级别将是整个 HTML。您可以检查元素上的 .attrib
以查看完整的属性字典,或使用 .keys()
获取键列表。
此外,由于 html
应该已经是根元素,您实际上不需要进行 xpath
查找。
假设您只想知道它是否存在,这样的事情应该可行:
def html_has_amp(url):
doc = urlopen(url).read()
tree = etree.HTML(doc)
return 'amp' in tree.keys()