【问题标题】:My function is only returning first element of the list when called. I am using BeautifulSoup to extract data我的函数只在调用时返回列表的第一个元素。我正在使用 BeautifulSoup 提取数据
【发布时间】:2022-06-13 20:26:02
【问题描述】:

这里是python初学者。我正在使用 BeautifulSoup 来抓取 books.toscrape.com 第一页中所有书籍的详细信息(标题、库存数量)。为此,必须首先获取所有单本书籍的链接。我已经为相同的功能创建了 page1_url。问题是,在返回提取的链接列表时,只返回列表的第一个元素。 请帮助识别错误或提供仅使用 BeautifulSoup 的替代代码。 提前致谢!

import requests
from bs4 import BeautifulSoup


def page1_url(page1):
    response= requests.get(page1)
    data= BeautifulSoup(response.text,'html.parser')
   
    
    b1= data.find_all('h3')
    
    for i in b1:
        l=i.find_all('a')
        for j in l:
            l1=j['href']
            books_urls=[]
            books_urls.append(base_url + l1)
            books_urls=list(books_urls)
            return books_urls
            
    
                     

allPages = ['http://books.toscrape.com/catalogue/page-1.html',
            'http://books.toscrape.com/catalogue/page-2.html']

base_url= 'http://books.toscrape.com/catalogue/'
bookURLs= page1_url(allPages[0])
print(bookURLs) 

【问题讨论】:

    标签: python-3.x web-scraping beautifulsoup


    【解决方案1】:

    你在第一个元素之后返回函数:

    import requests
    from bs4 import BeautifulSoup
    
    
    def page1_url(page1):
        response= requests.get(page1)
        data= BeautifulSoup(response.text,'html.parser')
       
        b1= data.find_all('h3')
        
        for i in b1:
            l=i.find_all('a')
            for j in l:
                l1=j['href']
                books_urls=[]
                books_urls.append(base_url + l1)
                books_urls=list(books_urls)
        
        return books_urls # this line had too many indents
                
        
    allPages = ['http://books.toscrape.com/catalogue/page-1.html',
                'http://books.toscrape.com/catalogue/page-2.html']
    
    base_url= 'http://books.toscrape.com/catalogue/'
    bookURLs= page1_url(allPages[0])
    print(bookURLs) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-04
      • 1970-01-01
      • 2022-06-17
      • 2014-01-02
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      • 2019-11-19
      相关资源
      最近更新 更多