我试图进行网页抓取,并使用以下代码:
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编程的新手。
对于<p>
找到的至少一个标签,tag.contents[0]
是Tag
对象,而不是文本。对于您找到的特定URL,它是一个<hr>
标记:
>>> tag
<p><hr> </hr></p>
为什么不使用tag.text
代替tag.contents[0]
?
for tag in soup.findAll('p'):
articletext += tag.text
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句