私はwired.comから記事を取得しようとしています。 は、一般的にこのような彼らの記事のコンテンツの外観:BeautifulSoup:findAll再帰が機能しない
<article itemprop="articleBody">
<p>Some text</p>
<p>Next text</p>
<p>...</p>
<p>...</p>
</article>
またはこのような:だから私は、ページがタイプ1であればページであればながら、<p>
と<h>
は、抽出され
<article itemprop="articleBody">
<div class="listicle-captions marg-t...">
<p></p>
</div>
</article>
をしたいですタイプ2である - 他の何かをする。したがって、<p>
と<h>
が<article>
の直系子孫の場合は、タイプ1です。 次のコードを試しましたが、<p>
と<h>
を探してタグ名を出力します。問題は、recursive="False"
は、タイプ2のページでテストしたときにタグを見つけることができないためです(NonType
オブジェクトを取得すると思われたため)。
import urllib.request
from bs4 import BeautifulSoup
import datetime
import html
import sys
articleUrl="https://www.wired.com/2016/07/greatest-feats-inventions-100-years-boeing/"
soupArticle=BeautifulSoup(urllib.request.urlopen(articleUrl), "html.parser")
articleBody=soupArticle.find("article", {"itemprop":"articleBody"})
articleContentTags=articleBody.findAll(["h1", "h2","h3", "p"], recursive="False")
for tag in articleContentTags:
print(tag.name)
print(tag.parent.encode("utf-8"))
なぜ機能しませんか?
PSさらに、findAll
とfindChildren
を使用している場合と、この特定のケースでは違いがありますか?これら二つは...私には同じように見える
ありがとうございました!それは私の注意を完全に逃した。 – parsecer
いいえ、あなたも大丈夫です。 –