2017-01-07 184 views
0

我使用bs4並遍歷所需的單個頁面上的所有鏈接。然後我將這些鏈接存儲在一個列表中。Python返回列表

這裏是我的代碼:

def scrape1(self): 

    html = self.browser.page_source 
    soup = BeautifulSoup(html, 'html.parser') 
    # add links to list for later use 
    urls = [] 
    for videos in soup.find_all('a', {'class': 'watch-now'}): 
     links = videos['href'] 
     urls.append(links) 

    return urls 

def use(self): 

    urls = scrape1() 

我想用回時,我可以在不同的方法使用的網址嗎?我希望能夠使用我追加到url列表中的每一個鏈接,當他們使用我不理解的類時,他們是更好的方式嗎?

回答

0

由於這些都是實例方法,你應該用self打電話給他們:

def use(self): 
    urls = self.scrape1() 

而且,你不必從scrape1()方法返回,可以設置實例屬性,如:

class MyScraper(): 
    # ... 

    def scrape1(self): 
     html = self.browser.page_source 
     soup = BeautifulSoup(html, 'html.parser') 

     self.urls = [a['href'] for a in soup.select('a.watch-now')] 

    def use(self): 
     self.scrape1() 

     # use self.urls 
     print(self.urls) 

而且,你將能夠使用urls這樣還有:

scraper = MyScraper() 
scraper.scrape1() 

print(scraper.urls) 
+0

它使用「use」方法時返回一個空列表如何正確定義類實例中的url? – listen

+0

@listen可能是HTML中沒有'watch-now'類的'a'元素嗎? – alecxe

0

你可以讓該方法返回該類的屬性。

self.urls = urls 

然後你可以引用其他方法。

任何與自我。是您可以在班級中參考的屬性。因此,您可以編寫另一種方法(無需將其作爲函數的參數提供)在函數中使用self.urls。