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これらは 2 つのクラスであり、同時に同じものではなく、異なる結果を出力する 2 つの異なるクラスであることに注意することが重要です。

これまでのところ、スタックオーバーフローの回答は機能していません。私は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 に答える