JavaでJsoupを使用して必要なことを実行するこのコードがあります
Elements htmlTree = doc.body().select("*");
Elements menuElements = new Elements();
for(Element element : htmlTree) {
if(element.hasClass("header"))
menuElements.add(element);
if(element.hasClass("name"))
menuElements.add(element);
if(element.hasClass("quantity"))
menuElements.add(element);
}
同じことをしたいのですが、PythonでBeautifulSoupを使用しています。スクレイプしようとしているHTMLのツリーの例は次のとおりです。
<div class="header"> content </div>
<div class="name"> content </div>
<div class="quantity"> content </div>
<div class="name"> content </div>
<div class="quantity"> content </div>
<div class="header"> content2 </div>
<div class="name"> content2 </div>
<div class="quantity"> content2 </div>
<div class="name"> content2 </div>
<div class="quantity"> content2 </div>
等
基本的に、出力で各要素の相対位置を保持する必要があります。PythonとBeautifulSoupを使用してそれを行うにはどうすればよいですか?
編集:
これは私が持っているPythonコードです(非常に素朴です)が、多分それは役立つでしょうか?
output = []
for e in soup :
if e["class"] == "pickmenucolmenucat" :
output.append(e)
if e["class"] == "pickmenucoldispname" :
output.append(e)
if e["class"] == "pickmenucolportions" :
output.append(e)