我期待着学习美丽的汤,并试图从页面提取所有链接http://www.popsci.com。。。但是我得到了一个语法错误。你知道吗
这段代码应该可以工作,但它不适合任何一页我尝试它。我想弄清楚为什么它不起作用。你知道吗
这是我的密码:
from BeautifulSoup import BeautifulSoup
import urllib2
url="http://www.popsci.com/"
page=urllib2.urlopen(url)
soup = BeautifulSoup(page.read())
sci=soup.findAll('a')
for eachsci in sci:
print eachsci['href']+","+eachsci.string
。。。我得到的错误是:
Traceback (most recent call last):
File "/root/Desktop/3.py", line 12, in <module>
print eachsci['href']+","+eachsci.string
TypeError: coercing to Unicode: need string or buffer, NoneType found
[Finished in 1.3s with exit code 1]
当
a
元素不包含文本时,eachsci.string
是None
-并且不能像您尝试的那样使用+
操作符将None
与字符串连接起来。你知道吗如果用
eachsci.text
替换eachsci.string
,这个错误就解决了,因为当a
元素为空时,eachsci.text
包含空字符串''
,并且将其与另一个字符串连接起来没有问题。你知道吗但是,当您碰到一个没有} 。你知道吗
href
属性的a
元素时,您将遇到另一个问题—当这种情况发生时,您将得到一个^{您可以使用^{} 来解决这个问题,如果一个键不在字典中,
a
元素假装是字典,那么它就可以返回一个默认值。你知道吗把所有这些放在一起,这里是
for
循环的一个变体:相关问题 更多 >
编程相关推荐