Blankman
Blankman

Reputation: 267220

BeautifulSoup(html) not working, saying can't call module?

import urllib2
import urllib
from BeautifulSoup import BeautifulSoup        # html
from BeautifulSoup import BeautifulStoneSoup     # xml
import BeautifulSoup                # everything
import re


f = o.open( 'http://www.google.com', p)
html = f.read()
f.close()


soup = BeautifulSoup(html)

Getting an error saying the line with soup = BeautifulSoup(html) says 'module' object is not callable.

Upvotes: 10

Views: 11009

Answers (3)

krypt0
krypt0

Reputation: 9

Install BeautifulSoup4
sudo easy_install BeautifulSoup4

Recommendation
from bs4 import BeautifulSoup

Upvotes: -1

Alex Martelli
Alex Martelli

Reputation: 882421

@Blair's answer has the right slant but I'd perform some things slightly differently, i.e.:

import BeautifulSoup
Soup = BeautifulSoup.BeautifulSoup

(recommended), or

import BeautifulSoup
from BeautifulSoup import BeautifulSoup as Soup

(not bad either).

Upvotes: 6

Blair Conrad
Blair Conrad

Reputation: 242030

Your import BeautifulSoup makes BeautifulSoup refer to the module, not the class as it did after from BeautifulSoup import BeautifulSoup. If you're going to import the whole module, you might want to omit the from ... line or perhaps rename the class afterward:

from BeautifulSoup import BeautifulSoup 
Soup = BeautifulSoup
...
import BeautifulSoup
....
soup = Soup(html)

Upvotes: 25

Related Questions