【问题标题】:Python: find on string return nonePython:在字符串上查找返回无
【发布时间】:2014-07-28 20:05:29
【问题描述】:

我正在开发一个解析 HTML 页面的项目。它适用于公司内部的网站,但我更改了示例,以便您尝试。

我获得了一个 HTML 页面的源代码并搜索了某个标记。然后我想提取这个标记的一个子字符串,但它不起作用。 Python 返回一个无...在我的代码下方,注释中包含 Python 的返回:

#!/usr/bin/python
import urllib2
from bs4 import BeautifulSoup

response = urllib2.urlopen("http://www.resto.be/restaurant/liege/4000-liege/8219-le-bar-a-gouts/")
page_source = response.read()

soup = BeautifulSoup(page_source)
name = soup.find_all("meta", attrs={"itemprop":"name"})
print(name[0])
# <meta content="LE BAR A GOUTS" itemprop="name"/>

print(name[0].find("<meta"))
# none

【问题讨论】:

  • 在 Python 2 中,print 是一个语句,而不是一个函数。您可以在此处安全地删除 (..) 括号。

标签: python beautifulsoup urllib2


【解决方案1】:

你没有字符串,你有一个标签对象。打印标签有一个很好的 HTML 表示,但它不是字符串对象。

因此,您正在使用 BeautifulSoup Tag.find() 函数,如果没有标签名称为 &lt;meta 的子标签,它将返回 None。确实没有。

如果您想查找content 属性,请使用项目访问权限:

print name[0]['content']

【讨论】:

  • 我不了解 tag.find 的所有内容,但您对我的帮助非常好!确实可以使用 print name[0]['content'] !我不太明白 BeautifulSoup 中的标签是什么。
  • @DescampsAu:soup 对象也是一个标签(顶层)。 find()find_all() 等都可以在标签对象上调用。
  • name[0].get('content'),以防您要搜索可能具有或不具有该属性的多个标签。
  • @DescampsAu:见Kinds of objects
猜你喜欢
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
相关资源
最近更新 更多