12

使用 BeautifulSoup,我的目标是抓取与这个 HTML 挂钩相关的文本:

<p class="review_comment">

因此,使用如下简单代码,

content = page.read()  
soup = BeautifulSoup(content)  
results = soup.find_all("p", "review_comment")

我很高兴地解析住在这里的文本:

<p class="review_comment">
    This place is terrible!</p>

坏消息是,每 30 次左右soup.find_all得到一个匹配,它也会匹配并抓取一些我真的不想要的东西,这是用户的旧评论,他们已经更新了:

<p class="review_comment">
    It's 1999, and I will always love this place…  
<a href="#" class="show-archived">Read more &raquo;</a></p>

在我试图排除这些旧的重复评论时,我尝试了一个大杂烩。

  • 我一直在尝试更改调用中的参数,以soup.find_all()专门排除出现<a href="#" class="show-archived">Read more &raquo;</a>
  • 我淹没在正则表达式类型匹配的边缘,但没有成功。
  • 我似乎无法利用该class="show-archived"属性。

任何想法将不胜感激。提前致谢。

4

1 回答 1

12

这就是你要找的吗?

for p in soup.find_all("p", "review_comment"):
    if p.find(class_='show-archived'):
        continue
    # p is now a wanted p
于 2013-10-13T23:57:05.790 回答