【问题标题】:Python Beautiful Soup find tag with exact string value of the classPython Beautiful Soup 查找具有类的确切字符串值的标签
【发布时间】:2015-10-22 01:21:10
【问题描述】:

我尝试了几个小时来寻找解决方案,我找到的代码要么返回包含我尝试匹配的类之一的所有标签,要么包含我的所有类但其中包含一些额外的类,但我希望这些类完全匹配。

以下解决方案对我不起作用:

您也可以搜索类属性的确切字符串值:

css_soup.find_all("p", class_="body strikeout")

我可以在本地从HTML sample 获取以下标签,但对于我在Complete code 部分中请求的页面却不能:

<ul class="mvn listInline">..</ul> 

HTML 示例:

<ul class="mvn listInline"> 
    <li class="mbn h4 typeEmphasize">$325,000</li>
    <li class="mbn h7">
         3 bd 2 ba 2,080 sqft 
    </li>
</ul>

<ul class="mvn listInline withotherclasses"> 
     <li class="mbn h4 typeEmphasize">$325,000</li>
     <li class="mbn h7">
         3 bd 2 ba 2,080 sqft
     </li>
</ul>

<ul class="mvn onlymvn"> 
     <li class="mbn h4 typeEmphasize">$325,000</li>
     <li class="mbn h7">
         3 bd 2 ba 2,080 sqft
     </li>
</ul>

完整代码:

page = requests.get('http://www.trulia.com/for_sale/Anchorage,AK/2_p')
soup_page = BeautifulSoup(page.text,'html.parser') 

for ul in soup_page.find_all("ul", class_="mvn listInline"):
    print ul 

【问题讨论】:

  • 您能否提供一个您遇到问题的示例 html?
    • $325,000
    • 3 bd 2 ba 2,080 sqft
    • $325,000
    • 3 bd 2 ba 2,080 sqft
      • $325,000
      • 3 bd 2 ba 2,080 sqft
  • 请在问题中更新。另外,更新你的 beautifulsoup 版本
  • 我试图只获取第一个 ul 标签(
      ..
    ),但失败了,因为其他 ul 标签也会返回。跨度>
  • 您确定您使用的是上面给出的确切代码吗?我对此没有任何疑问。

标签: python python-2.7 beautifulsoup


【解决方案1】:

soup_page.find_all("ul", class_="mvn listInline") 只能找到具有 EXACTLY 类属性的 ul mvn listInline 您需要使用 css 选择器: soup.select("ul.mvn.listInline")

【讨论】:

  • 这就是我想要的。它适用于本地 html 文件,但不适用于我请求的页面。不知道是什么原因。我可以在源代码检查器中看到这两个类的标记。
  • @AaronMoose 我在该页面上看不到任何类名为mvn listInline 的元素。不要相信检查员。元素/属性可以通过 javascript 添加,在这种情况下,BeautifulSoup 无法解析。
  • 我明白了,这是有道理的。谢谢你的协助。我会尝试不同的方法来解决我原来的问题。
猜你喜欢
  • 2019-01-24
  • 2015-12-09
  • 2022-07-16
  • 2013-02-28
  • 2013-05-27
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多