前提・実現したいこと
PythonでWebスクレイピングによる情報収集するプログラムを作成しています。
途中で情報がうまく収集できないため、HTMLのソースを見たところ、情報に
よってHTMLが変化していました。
取得したいサイト情報の変化点
HTML
1<li class="item"> 2 <a href="/detail/?id=1"> 3 <div class="image"> 4 <img src="/images/1.jpg" alt="1"> 5 </div> 6 <p class="desc"><span class="set">SET</span>アイテム1</p> <--ココ 7 </a> 8 <div class="info"> 9 <div class="no"><span class="bold">1</span></div> 10 </div> 11 <a href="id=A"> 12 <p class="name">A</p> 13 </a> 14</li> 15 16<li class="item"> 17 <a href="/detail/?id=2"> 18 <div class="image"> 19 <img src="/images/2.jpg" alt="2"> 20 </div> 21 <p class="desc">アイテム2</p> <--ココ 22 </a> 23 <div class="info"> 24 <div class="no"><span class="bold">2</span></div> 25 </div> 26 <a href="id=B"> 27 <p class="name">B</p> 28 </a> 29</li> 30
class="desc" のテキストを .string を使い取り出そうとしていますが、内容により<span class="set">が入りうまくテキストを抽出することができません。
取り出したいイメージは次の通りです。
1つ目の desc : [SET]アイテム1 2つ目の desc : アイテム2
試したこと
以前、PerlによるWebスクレイピングをしていたので、1行ずつ処理していくイメージがあり、Pythonのコード書きましたが、結果は得られませんでした。
該当のソースコード
Python3
1for i in bs.select('item'): 2 if i.find(class_="desc"): 3 if i.find(class_="set"): 4 title = SET + i.find(class_="desc").string 5 else 6 title = i.find(class_="desc").striing
どの様にコーディングをすれば、目的のイメージの様な出力結果が得られますでしょうか。
よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
利用環境:
OSX 10.13.6
python 3.7.0
beautifulsoup4 4.7.1

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/29 15:46
2019/04/30 03:30
2019/04/30 09:46
2019/04/30 10:21