select文でのclassの中の文字に正規表現を使えますか

前提

第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 コメント