【问题标题】:BeautifulSoup findall using regex to find class A OR class BBeautifulSoup findall 使用正则表达式查找 A 类或 B 类
【发布时间】:2015-10-11 05:25:13
【问题描述】:

我正在尝试按顺序查找 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

【问题讨论】:

    标签: regex python-3.x beautifulsoup html-parsing bs4


    【解决方案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" )}))
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多