我在 BeautifulSoup(python)中的 navigablestrings 和 unicode 有一些问题。
基本上,我正在解析来自 youtube 的四个结果页面,并将顶部结果的扩展名(在 youtube.com/watch?= 之后的 url 结尾)放入列表中。
然后,我在其他两个函数中循环列表,其中一个会引发此错误:TypeError: 'NavigableString' object is not callable
. 然而,另一个说TypeError: 'unicode' object is not callable
。两者都使用相同的字符串。
我在这里做错了什么?我知道我的解析代码可能并不完美,我同时使用 BeautifulSoup 和正则表达式。过去,每当我遇到 NavigableString 错误时,我都会抛出一个“.encode('ascii', 'ignore') 或简单的 str(),这似乎有效。任何帮助将不胜感激!
for url in urls:
response = urllib2.urlopen(url)
html = response.read()
soup = BeautifulSoup(html)
link_data = soup.findAll("a", {"class":"yt-uix-tile-link result-item-translation-title"})[0]
ext = re.findall('href="/(.*)">', str(link_data))[0]
if isinstance(ext, str):
exts.append('http://www.youtube.com/'+ext.replace(' ',''))
接着:
for ext in exts:
description = description(ext)
embed = embed(ext)
我只添加了 isinstance() 行来尝试查看问题所在。当 'str' 更改为 'unicode' 时,exts 列表为空(意味着它们是字符串,而不是 unicode(甚至是可导航字符串?))。我很困惑...