我正在制作一个个人项目,但遇到了一些麻烦。
我正在使用Beautiful Soup从网页上删除一些用户回复。我想在他们的帖子上专门删掉downvotes和upvotes的数量,但我没能成功地这样做。
下面是包含用户帖子的upvotes数量的HTML。每个用户都有一个不同的name
元素ID,如171119643
所示,所以我对如何抓取所有name
元素感到困惑。
<strong id="cmt_o_cnt_171119643" name="cmt_o_cnt_171119643">756</strong>
我注意到每个名字都以相同的字符串开头:cmt_o_cnt_
。有没有办法可以使用下面的代码来搜索以该字符串开头的元素?
for url in soup.find_all('strong', name_=''):
答案 0 :(得分:1)
非正则表达式解决方案是检查子串"cmt_o_cnt_"
是否在tag['name']
中:
for tag in soup.find_all('strong'):
if "cmt_o_cnt_" in tag['name']:
print(tag['name']) # or do your stuff
答案 1 :(得分:0)
通过使用CSS选择器,您可以删除所需的名称元素。
from bs4 import BeautifulSoup
html = '''
<strong id="cmt_o_cnt_171119643" name="cmt_o_cnt_171119643">756</strong>
<strong id="cmt_o_cnt_171119644" name="cmt_o_cnt_171119644">256</strong>
<strong id="cmt_o_cnt_171119645" name="cmt_o_cnt_171119645">123</strong>
'''
soup = BeautifulSoup(html,"lxml")
for tag in soup.select('strong[name*="cmt_o_cnt_"]'):
print(tag['name'])
您可以查看css选择器here
的一些用法