2017-07-10 149 views
-6

Python代码截图捕捉“NoneType”对象有没有属性“串”

什么事?关于它?

html = """ <html><body>(html)(body) 
<h1>(h1)what is the scraping(/h1)</h1> 
<p>(p)To analyze a web page(/p)</p> 
<p>(p)To extract the desired part(/p)</p> 
(/body)(/html)</body></html> """ 

soup = BeautifulSoup(html, 'html.parser') 

title = soup.find(id="title") 

body = soup.find(id="body") 

print ("title=" + title.string) 

print ("body=" + body.string) 
+1

您需要正确格式化代码并给我们一个问题来回答。 –

+0

你的'soup.find'调用都返回None。下一次,您需要包含错误的完整追溯。此外,解释你的代码应该做什么以及你期望的。 – idjaw

+1

可能重复的[Python:属性错误 - 'NoneType'对象没有属性'东西'](https://stackoverflow.com/questions/8949252/python-attribute-error-nonetype-object-has-no-attribute-东西) –

回答

0

。在你没有html标签title。所以,title=None。因此你无法从中得到任何内容。

尝试用lxml代替html.parser并尝试soup.body而不是搜索body标签。

+0

'soup.find(id =“body”)'也返回'None'。 – idjaw

+0

尝试soup.body而不是find(body),并尝试用lxml代替html.parser –

+0

我不是问题提问者。我在说代码中有另一个错误,所以你可以将它添加到你的答案中。让你的答案更完整。 – idjaw

1

您正在尝试查找id等于title的元素,如<p id="title">foo bar</p>

如果您想通过其类型找到标签,这样做:

soup.find('body') # returns content of <body> 

或者

soup.find('title') 

第二个例子将不会在你的情况下工作,因为在你的HTML没有<title>foo bar</title>标签,但你明白了。

相关问题