【问题标题】:BeautifulSoup always returns null when I use findAll当我使用 findAll 时,BeautifulSoup 总是返回 null
【发布时间】:2011-02-09 00:47:37
【问题描述】:

我正在尝试使用 BeautifulSoup 来解析一些网页,每当我使用 findAll 时它总是返回 null,即使我可以访问 soup.title 之类的东西也很好。

我现在正在尝试使用this link 进行解析,这就是我尝试使用它时得到的结果:

>>> site = urllib2.urlopen('http://www.newegg.com/Product/ProductList.aspx?Submit=ENE&IsNodeId=1&Description=nvidia%20gtx%20560%20ti&bop=And&Order=PRICE&PageSize=20')                                                                                                                            
>>> soup = BeautifulSoup(site)                                                                                  
>>> soup.title                                                                                                                                   
<title>Newegg.com - nvidia gtx 560 ti</title>                                                                                                    
>>> soup.findAll('title')                                                                                                                        
Null                                                                                                                                             
>>>

有谁知道它为什么这样做?我正在使用 BeautifulSoup 2.1.1

【问题讨论】:

  • 如果还可以,请跳到scrapy。它更强大,仍然受支持
  • 您的 url 链接给了我格式错误的开始标签错误。我在其他网站上试过代码,一切都很好。
  • 使用 BeautifulSoup 3.2.0 和示例中的 URL 为我工作。

标签: python beautifulsoup


【解决方案1】:

您使用的是旧版本的 BeautifulSoup,它没有 findAll 方法。我相信旧版本的等效方法称为fetch。在 BeautifulSoup 3.0.0 版本中添加了findAll 方法,当时方法名称已更改为更加一致。来自文档:

Beautiful Soup 的早期版本具有 first、fetch 和 fetchPrevious 等方法。这些方法仍然存在,但它们已被弃用,并且可能很快就会消失。所有这些名字的总效果非常混乱。新名称命名一致:如前所述,如果方法名称是复数或引用 All,则返回多个对象。否则,它返回一个对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-19
    • 2021-06-15
    • 2021-09-27
    • 2023-03-16
    • 1970-01-01
    • 2014-10-13
    • 1970-01-01
    • 2021-11-21
    相关资源
    最近更新 更多