【问题标题】:beautifulsoup find_all bug?beautifulsoup find_all 错误?
【发布时间】:2015-02-11 17:51:20
【问题描述】:

现在我正在使用漂亮的汤来解析 html 页面。但有时我通过 find_all 得到的结果小于页数。例如,此页面http://www.totallyfreestuff.com/index.asp?m=0&sb=1&p=5 有 18 个标题跨度。但是当我使用以下代码时,它只有两个!谁能告诉我为什么。提前谢谢!

soup = BeautifulSoup(page, 'html.parser')
hrefDivList = soup.find_all("span", class_ = "headline")
#print hrefDivList
print len(hrefDivList)

【问题讨论】:

  • 您是如何获得page 的?在我的情况下,您的代码打印 18。
  • 我使用 urllib 获取页面,并将页面打印出来。它确实在页面中有 18 个标题跨度。但是我的代码只有两个。你能把你的代码分享给我吗?

标签: beautifulsoup findall


【解决方案1】:

您可以尝试对 Beautifulsoup 使用不同的解析器。

import requests
from bs4 import BeautifulSoup

url = "<your url>"
r = requests.get(url)

soup = BeautifulSoup(r.content, 'lxml')
hrefDivList = soup.find_all("span", attrs={"class": "headline"})
print len(hrefDivList)

【讨论】:

    【解决方案2】:

    您可以尝试使用 CSS 选择器让您的生活更轻松

    hrefDivList = soup.select("span.headline")
    #print hrefDivList
    print len(hrefDivList)
    

    或者你可以直接遍历每个 Span 文本

    for every_span in soup.select("span.headline"):
        print(every_span.text)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-22
      • 2019-12-20
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 2014-03-26
      相关资源
      最近更新 更多