【发布时间】:2021-02-18 19:16:17
【问题描述】:
【问题讨论】:
标签: python beautifulsoup
【问题讨论】:
标签: python beautifulsoup
您不需要正则表达式选择器,只需选择最近的类然后使用.next_sibling
ranks = soup.select('.item_color_title')
for rank in ranks:
rank = rank.next_sibling
# cleanup non alphanumeric: " 520th (" ==> 520th
rank = re.sub(r'\W', '', rank)
print(rank)
【讨论】:
@Aleksandre Tsertsvadze,请不要发布代码图片,而是代码块内的代码本身。此外,请尝试提供最少的可重现示例、出了什么问题或您实际期望代码执行的操作。
我无法重现该问题。我试图模仿您的代码风格,这就是我得到的 -
from bs4 import BeautifulSoup
html = """<span class="class_1 class_2"> mathing </span> <span> empty </span>
" ()blabla " <span class="class_1"> mathing2 </span>"""
soup = BeautifulSoup(html, 'html.parser')
for item in soup.find_all("span", class_=re.compile("^class_1")):
print(item)
python 3.8 上的输出 -
<span class="class_1 class_2"> mathing </span>
<span class="class_1"> mathing2 </span>
你有什么问题?
【讨论】:
你可以试试
import re
for tag in soup_obj.find_all(re.compile("^span")):
print(tag.next) # text
print(tag) # tag
【讨论】: