Skip to main content
 首页 » 编程设计

python之在 python 中使用 Web 解析进行面向对象编程

2024年08月28日40sky-heaven

我正在自学 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 .