2016-11-29 3 views
-1

Я пытаюсь запустить ООП и решил переписать сценарий таким образом. Веб-страница имеет окно ссылок, которые я хочу сохранить, поэтому я сделать следующий кодНаследование методов из Bs4 в моем классе

class webpage(BeautifulSoup): 

    def __init__(self, link, html, links): 

     self.link = link 
     driver = webdriver.PhantomJS() 
     driver.get(link) 
     self.html = driver.page_source 
     self.links = [] 

    def forty_pages(self): 

     soup = BeautifulSoup(html, 'html.parser') 
     link_box = soup.find('div', {'id': 'sliderBottom'}) 
     rest = link_box.find_all('a') 
     forty_links = [] 

     for i in rest: 
      try: 
       link = i.get('href') 
       forty_links.append(link) 
      except: 
       pass 
     self.links.append(x for x in forty_links) 

test = webpage(link=root) 
test.forty_pages() 

Проблема заключается в том, что он говорит

TypeError: module.__init__() takes at most 2 arguments (3 given) 

который я запутался, как self.html должен заполнить себя, когда драйвер возвращает строку, содержащую данные html. Может ли кто-нибудь пролить свет на это? EDIT: Я сказал, что нет никакой необходимости в композиции, но я не могу назвать модуль BS4 из класса, поэтому я застрял о том, как implrment это ... например:

class rightmove_page(object): 

    def __init__(self, link): 
     self.link = link 

    def forty_pages(self): 
     driver = webdriver.PhantomJS() 
     html = driver.get(self.link) 
     soup = BeautifulSoup(html, 'html.parser') 
     print(soup) 

дает ошибка:

Traceback (most recent call last): 
    File "/home/sn/Documents/Projects/House_Prices/class_pased.py", line 21, in <module> 
    test.forty_pages() 
    File "/home/sn/Documents/Projects/House_Prices/class_pased.py", line 17, in forty_pages 
    soup = BeautifulSoup(html, 'html.parser') 
TypeError: 'module' object is not callable 
+1

Как вы думаете, откуда взялись эти другие параметры? Вы называете это напрямую без них. – jonrsharpe

+0

Почему вы хотите подкласс BeautifulSoup здесь? Кажется, нет никаких оснований для этого; вы не используете никаких унаследованных функций. –

+0

Я хочу использовать некоторые функции BeautifulSoups определенно, я просто просматриваю композицию и импортирую некоторые методы Bs4 – entercaspa

ответ

0

извините ребята, разобрались его сделали, просто вводит BS4 в методах класса вместо того, чтобы включить функции в опр инициализации часть класса. вы правы Даниэль Роземан благодарит человека