前提
第1階層のdiv要素のclss(aaa)と第2階層のul要素のclss(bbb)がが同じで、
第3階層liタグのclassのはじめの4文字が”ccc-”のものだけをスクレイプする方法がわかりません。
エラーの部分の解決方法か、もしこのやり方では不可能なら他のやり方のアドバイスをいただけないでしょうか。
該当のソースコード
import requests from bs4 import BeautifulSoup import re html = """ <html> <head> <meta charset="UTF-8"> <titlet></title> </head> <body> <br /><br /><br /> <div class="aaa"> <ul class="bbb"> <li class="ccc-01">ccc-01</li> <li class="ccc-02">ccc-02</li> <li class="ccc-02">ccc-03</li> <li class="ccc-02">ccc-04</li> </ul> </div> <div class="aaa"> <ul class="bbb"> <li class="ddd-01">ddd-01</li> <li class="ddd-02">ddd-02</li> </ul> </div> </body> </html> """ soup = BeautifulSoup(html, "html.parser") #for gengo in soup.select('ul.bbb > li["ccc*"]'): for gengo in soup.select('ul.bbb > li.ccc*'): gengo_text = gengo.text print(gengo_text)
実現したいこと
上記のプログラムで、
ccc-01
ccc-02
ccc-03
ccc-04
という表示だけを得たい
*ddd-01、ddd-02は表示されたくない
発生している問題・エラーメッセージ
soupsieve.util.SelectorSyntaxError: Tag name found at position 15 instead of at the start line 1: ul.bbb > li.ccc*
0 コメント