判断 <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()