2017-07-10 9 views
-6

のpythonコードのスクリーンショットのキャプチャ'NoneType' オブジェクトには属性 'string' に

問題が何であるかを持っていませんか?それについて?

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:Attribute Error - 'NoneType'オブジェクトに重複している可能性のある属性は 'something'です。](https://stackoverflow.com/questions/8949252/python-attribute-error-nonetype-object-has-no-attribute-何か) –

答えて

0

あなたhtmlにはtitleタグはありません。したがって、title=None。したがって、あなたはそれから任意のコンテンツを取得することはできません。

html.parserの代わりにlxmlで試してbodyタグを検索する代わりにsoup.bodyを試してみてください。

+0

'soup.find(id =" body ")'も 'None'を返しています。 – idjaw

+0

find(body)の代わりにsoup.bodyを試してみて、html.parserの代わりにlxmlを試してみてください。 –

+0

私は質問者ではありません。私はあなたの答えにそれを加えることができるので、コードに別の間違いがあることを述べています。あなたの答えをより完全にしてください。 – idjaw

1

titleと等しいidを持つ要素(<p id="title">foo bar</p>など)を検索しようとしています。

あなたはそのタイプによってタグを検索したい場合は、操作を行います。

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

それとも

soup.find('title') 

を一切<title>foo bar</title>タグがあなたのhtmlではありませんので、2番目の例では、あなたのケースで動作しません。しかし、あなたはその考えを持っています。

関連する問題