【问题标题】:Python returning a listPython 返回一个列表
【发布时间】:2017-01-07 18:49:40
【问题描述】:

我正在使用 bs4 并遍历我需要的单个页面上的所有链接。然后我将这些链接存储在一个列表中。

这是我的代码:

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()

我认为在使用 return 时我可以以不同的方法使用网址?我希望能够使用我附加到 url 列表的每个链接,当使用我不理解的类时,他们是更好的方法吗?

【问题讨论】:

    标签: python-3.x selenium bs4


    【解决方案1】:

    由于这些是实例方法,您应该使用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)
    

    【讨论】:

    • 使用“use”方法时返回一个空列表我将如何在类实例中正确定义url?
    • @listen 会不会是在 HTML 中没有带有 watch-now 类的 a 元素?
    【解决方案2】:

    您可以让方法将 url 返回到类的属性中。

    self.urls = urls
    

    然后你可以从其他方法中引用它。

    任何与自我有关的东西。是您可以在整个类中引用的属性。因此,您可以编写另一种方法(无需将其作为函数的参数提供)可以在函数中使用 self.urls。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-01
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多