Вернуть элемент внутри класса, Python.BeautifulSoup - PullRequest
0 голосов
/ 21 октября 2018

Я создал простой класс с настройками BeautifulSoup, но каждый раз, когда я пытаюсь использовать его (элемент «суп»), он возвращает ошибку.

class Settings:

    def __init__(self, url):
        self.url = url
        requests.get(url, headers={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'}, timeout=15)
        html = urlopen(url)
        soup = BeautifulSoup(html, 'lxml')
        type(soup)

    def soup_element(self):
        return(self.type(soup))

settings_website_1 = Settings('https://www.auchandirect.pl/auchan-warszawa/pl/search?text=pepsi+cola&callback=true')
print(settings_website_1.soup_element())

Как правильно набрать элемент (суп)?Чтобы использовать его в такой последовательности?

links = soup.findAll('a')

Любая помощь будет оценена.

РЕДАКТИРОВАТЬ :

url = "https://www.auchandirect.pl/auchan-warszawa/pl/search?text=pepsi+cola&callback=true"
r = requests.get(url, headers={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'}, timeout=15)
html = urlopen(url)
soup = BeautifulSoup(html, 'lxml')
type(soup)

1 Ответ

0 голосов
/ 22 октября 2018

Вы не сделали soup членом класса.

Попробуйте изменить следующее:

при методе __init__, измените soup на self.soup

и измените метод soup_element на:

def soup_element(self):
    return self.soup

Теперь вы можете использовать:

WEBSITE = 'https://www.auchandirect.pl/auchan-warszawa/pl/search?' \
          'text=pepsi+cola&callback=true'
settings_website = Settings(WEBSITE)
soup_obj = settings_website.soup_element()
print soup_obj.findAll("a")

И получить результат в виде списка:

[<a class="logo logo-auchan " href="/auchan-warszawa/pl/">\n<img alt="Zakupy spo\u017cywcze przez Internet \u2013 Zbijamy ceny   
zawodowo online \u2013 Sklep Auchandirect.pl" class=" lazyload" data-src="/images/h42/hfb/8805727109150.png" height="" src=
"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" title="Auchan.pl logo" width=""/>\n</a>, <a class="logo 
logo-mobile " href="/auchan-warszawa/pl/">\n<img alt="Zakupy spo\u017cywcze przez Internet \u2013 Zbijamy ceny zawodowo online \u2013 
Sklep Auchandirect.pl" class=" lazyload" data-src="/images/h42/hfb/8805727109150.png" height="" src=
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...