我正在使用beautifulsoup并且正在循环浏览一系列li
个对象,导致我出现问题的两个对象是以下两个:
<li><span class="prefix">Teams</span>6</li>
<li><span class="prefix">New teams</span>4</li>
我根据.find
进行匹配,如下所示:
if newdetail.find(text=re.compile("Teams")):
但由于某种原因,re.compile
正在注册此if语句下的每个li
对象,我想让它区分大小写,以便它只能找到以下内容:
<li><span class="prefix">Teams</span> 6</li>
有人对如何解决这个问题有任何想法吗?
答案 0 :(得分:0)
问题是我解析的html总是没有相同的html部分
我不确定您是否表示您所需的信息并不总是在列表和跨度中,或者是什么,但这里是我如何解析您的数据并提取我想要的总数。
from bs4 import BeautifulSoup
page_filename = "tester.html"
html_file = open(page_filename, 'r').read()
soup = BeautifulSoup(html_file)
lists = soup.find_all('li')
for item in lists:
span = item.find('span')
if "Teams" in span.string:
span.replaceWith('')
print item.text
如果Teams和Total总是在一条线上,但不一定在列表或跨度中,或者它们在行内不一致地以相同的方式关联,那么您将无法获得所需的内容。理想情况下,您将确定可以找到Team和Total的所有模式,使用BS4的内置方法查找匹配项,并在需要时使用正则表达式完成剩下的工作。