我正在自学 Python 中的面向对象编程和 Web 解析。我想创建一个将解析网页的类。我对我的代码有疑问。
我正在尝试使用 Beautifulsoup 下载页面。我创建了一个类和一个函数来下载页面,但页面似乎没有下载。我不确定为什么。如果有人可以帮助我解决这个问题,那就太好了。这是代码:
from BeautifulSoup import BeautifulSoup
import urllib2
class parser():
def __init__(self, url):
self.url = "http://www.any_url"
self.contents = ''
def download_page(self):
page=urllib2.urlopen(self.url)
soup = BeautifulSoup(page.read())
page_find=soup.findAll()
print page_find
if __name__ == '__main__':
parser.download_page
我遇到的另一个问题是缩进。现在,我的函数 download_page 似乎存在于我的构造函数中。我试图将我的功能分开,但由于缩进,我不断出错。我基本上只是不停地点击'tab'直到它全部编译。有人可以解释为什么会这样吗?真的有问题吗?
我问是因为每当我查看 python 中的面向对象时,函数通常缩进得更均匀。
请您参考如下方法:
我认为问题在于您没有正确使用类。尝试类似的东西:
class Parser(object):
def __init__(self, url):
...
def download_page(self):
...
然后使用:
parser = Parser(url) # create instance of the class
parser.download_page() # call instance method
目前,您正在尝试调用类上的 download_page,而不是实例。
就是说,当您的类有“两个方法,其中一个是__init__”时,您可能应该stop writing classes .
