1

我试图按顺序找到class="A" 和class="B"。换句话说,我想使用 OR 运算符,以便它以正确的顺序打印出结果。这是我的尝试和结果:

#Attempt #1
print(soup.find_all("li", attrs={"class": re.compile(r"Some Text A|Some Text B" )}))

#Attempt #2
soup.findAll("li", {'class':['Some Text A', 'Some Text B']})

#Attempt #3
print(soup.find_all("li", class_= re.compile(r"Some Text A|Some Text B" )))

所有尝试都给了我一个空列表作为结果,但应该有 46 个结果。我可以单独做这两门课,但我不知道如何同时做。需要注意的是,这两个类不是同时归属于同li一个类,而是两个输出不同结果的不同类。

到目前为止,没有任何stackoverflow答案有效。我正在使用 python 3.4 和 Beautifulsoup 4

4

1 回答 1

1

我找到了部分解决方案。由于某种原因,当字符串“A”或/和字符串“B”包含空格时,正则表达式将无法正常工作。例如 :

这不起作用:

print(soup.find_all("li", attrs={"class": re.compile(r"Some Text A|Some Text B" )}))

但是这有效:

print(soup.find_all("li", attrs={"class": re.compile(r"A|B" )}))

谢天谢地,我的字符串仍然足够精确,同时排除了空格后面的文本。对于使用正则表达式时涉及包含空格的字符串的搜索,我将不胜感激。

于 2015-07-21T16:34:29.243 回答