强制转换为 Unicode:需要字符串或缓冲区,找到标记
Posted
技术标签:
【中文标题】强制转换为 Unicode:需要字符串或缓冲区,找到标记【英文标题】:coercing to Unicode: need string or buffer, Tag found 【发布时间】:2013-11-23 22:04:40 【问题描述】:我正在尝试进行网页抓取并使用以下代码:
import mechanize
from bs4 import BeautifulSoup
url = "http://www.indianexpress.com/news/indian-actions-discriminating-against-us-exp/1131015/"
br = mechanize.Browser()
htmltext = br.open(url).read()
articletext = ""
soup = BeautifulSoup(htmltext)
for tag in soup.findAll('p'):
articletext += tag.contents[0]
print articletext
但我收到以下错误:
Traceback (most recent call last):
File "C:/Python27/crawler/express.py", line 15, in <module>
articletext += tag.contents[0]
TypeError: coercing to Unicode: need string or buffer, Tag found
谁能帮我解决这个错误,我是 Python 编程新手。
【问题讨论】:
【参考方案1】:对于至少找到一个<p>
标记,tag.contents[0]
是一个Tag
对象,而不是文本。对于您找到的具体网址,它是一个<hr>
标签:
>>> tag
<p><hr> </hr></p>
为什么不用tag.text
而不是tag.contents[0]
?
for tag in soup.findAll('p'):
articletext += tag.text
【讨论】:
是的,这有帮助。非常感谢。以上是关于强制转换为 Unicode:需要字符串或缓冲区,找到标记的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到字典 [关闭]
强制转换为 Unicode:需要字符串或缓冲区,在 django admin 中渲染时发现 NoneType
TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到 datetime.timedelta
管理界面中的 Django auth.User:强制转换为 Unicode:需要字符串或缓冲区,找到用户