Я пытаюсь запустить ООП и решил переписать сценарий таким образом. Веб-страница имеет окно ссылок, которые я хочу сохранить, поэтому я сделать следующий кодНаследование методов из 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
Как вы думаете, откуда взялись эти другие параметры? Вы называете это напрямую без них. – jonrsharpe
Почему вы хотите подкласс BeautifulSoup здесь? Кажется, нет никаких оснований для этого; вы не используете никаких унаследованных функций. –
Я хочу использовать некоторые функции BeautifulSoups определенно, я просто просматриваю композицию и импортирую некоторые методы Bs4 – entercaspa