Как мне решить «отсутствует 1 обязательный позиционный аргумент» - PullRequest
0 голосов
/ 23 ноября 2018

Я написал метод в классе и получил следующую ошибку

yearLinks = link(root_url + '/oilmarketreport/reports/')
TypeError: link() missing 1 required positional argument: 'url'

Мой код: -

class Data:
    def __init__(self):
        try: ------
             ----
        else:

 def link(self, url):

        all_links = []
        page = requests.get(url)
        soup = BeautifulSoup(page.text, 'html.parser')
        for href in soup.find_all(class_='omrlist'):
            all_links.append(root_url + href.find('a').get('href'))
        return all_links
 yearLinks = link(root_url + '/oilmarketreport/reports/')
 reportLinks = []
 for url in yearLinks:
     links = link(url)

Так, как я решаю это в Python.

Ответы [ 3 ]

0 голосов
/ 23 ноября 2018

это неясный вопрос.может быть статический метод это то, что вы хотели.

class Data:
    def __init__(self):
        try: ------
             ----
        else:
 @staticmethod
 def link(url):

        all_links = []
        page = requests.get(url)
        soup = BeautifulSoup(page.text, 'html.parser')
        for href in soup.find_all(class_='omrlist'):
            all_links.append(root_url + href.find('a').get('href'))
        return all_links
 yearLinks = Data.link(root_url + '/oilmarketreport/reports/')
 reportLinks = []
 for url in yearLinks:
     links = Data.link(url)
0 голосов
/ 23 ноября 2018

Просто для наглядности:

class Data:
    def __init__(self):
       """"""

    @staticmethod
    def link(url):
        return url


print(Data.link("some_link"))    # call method of class Data (will print "some_link")
0 голосов
/ 23 ноября 2018

нужно сделать self.link(url).Отсутствует параметр self.Изменить:

Вы можете обновить строку как:

yearLinks = self.link(root_url + '/oilmarketreport/reports/')

...