【问题标题】:BeautifulSoup soup object creation consistent errorBeautifulSoup 汤对象创建一致错误
【发布时间】:2017-02-13 05:47:50
【问题描述】:

我是网页抓取的新手,我在使用 beautifulsoup 时遇到了一些困难,这似乎与安装有关,而不是与代码本身有关。我已经安装了 bs4,并且想从网页中获取数据。我从一个简单的练习开始,如下所示:

import requests
import urllib
from BeautifulSoup import BeautifulSoup

page = requests.get("http://forecast.weather.gov/MapClick.php?lat=37.7772&lon=-122.4168")

soup = BeautifulSoup(page.content, 'html.parser')

这让我得到以下错误消息

Traceback (most recent call last):

  File "<ipython-input-62-a9912850b0dc>", line 1, in <module>
    soup = BeautifulSoup(page.content, 'html.parser')

  File "/Users/../anaconda/lib/python2.7/site-packages/BeautifulSoup.py", line 1522, in __init__
    BeautifulStoneSoup.__init__(self, *args, **kwargs)

  File "/Users/../anaconda/lib/python2.7/site-packages/BeautifulSoup.py", line 1147, in __init__
    self._feed(isHTML=isHTML)

  File "/Users/../anaconda/lib/python2.7/site-packages/BeautifulSoup.py", line 1189, in _feed
    SGMLParser.feed(self, markup)

  File "/Users/../anaconda/lib/python2.7/sgmllib.py", line 104, in feed
    self.goahead(0)

  File "/Users/../anaconda/lib/python2.7/sgmllib.py", line 174, in goahead
    k = self.parse_declaration(i)

  File "/Users/../anaconda/lib/python2.7/site-packages/BeautifulSoup.py", line 1463, in parse_declaration
    j = SGMLParser.parse_declaration(self, i)

  File "/Users/../anaconda/lib/python2.7/markupbase.py", line 109, in parse_declaration
    self.handle_decl(data)

  File "/Users/../anaconda/lib/python2.7/site-packages/BeautifulSoup.py", line 1448, in handle_decl
    self._toStringSubclass(data, Declaration)

  File "/Users/../anaconda/lib/python2.7/site-packages/BeautifulSoup.py", line 1381, in _toStringSubclass
    self.endData(subclass)

  File "/Users/../anaconda/lib/python2.7/site-packages/BeautifulSoup.py", line 1251, in endData
    (not self.parseOnlyThese.text or \

AttributeError: 'str' object has no attribute 'text'

如果我删除 'html.parser' 并使用

soup = BeautifulSoup(page.content)

代码有效,但当然,它不能满足我的需要。

关于如何解决这个问题的任何线索?我在 OSX El Capitan 中,并使用 spyder 作为编辑器。我确实重新安装了几次bs4。

谢谢

【问题讨论】:

    标签: python python-2.7 beautifulsoup python-requests


    【解决方案1】:

    您使用的是旧版本的 BeautifulSoup。请卸载它,然后安装 BeautifulSoup4,pip install BeautifulSoup4;然后调整你的代码:

    import requests
    from bs4 import BeautifulSoup
    
    r = requests.get('http://forecast.weather.gov/MapClick.php?lat=37.7772&lon=-122.4168')
    s = BeautifulSoup(r.content, 'html.parser')
    

    【讨论】:

    • 谢谢哈立德。就是这样。
    【解决方案2】:

    试试这个 sn-p:

    soup = BeautifulSoup(page.content, 'html.parser')
    # in place of page.content use page.text
    soup = BeautifulSoup(page.text, 'html.parser')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 2018-09-04
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多