Skip to main content
 首页 » 编程设计

python之打印功能在继续之前不会打印完整列表

2025年05月04日21Free-Thinker

我试图打印出结果页面的链接列表,然后在将变量 pageNum 加 1 的同时自行调用 scraper 函数。出于某种原因,此代码仅打印出每一页上的第一个结果,而不是打印所有结果,然后转到下一页。在递归调用 scraper 函数

之前,如何等待打印函数完全完成
from urllib.request import Request, urlopen 
from bs4 import BeautifulSoup 
import re 
 
 
def scraper(pageNum): 
        req = Request("http://www.someurl.com/Search/page="+str(pageNum)+"&facet_Category=20", headers={"User-Agent": "Mozilla/5.0"}) 
        html = urlopen(req).read() 
        bsObj = BeautifulSoup(html) 
        for result in bsObj.select("h2 a"): 
            print(result["href"]) 
            scraper(pageNum+1) 
 
 
scraper(1)     

请您参考如下方法:

之所以这样做,是因为您在循环中递归调用了 scraper,因此一旦您打印出第一个链接,递归就会发生。

您可以通过将递归回调移回一个缩进来解决此问题,但请注意,递归并不是解决此类问题的真正好方法 - 您实际上应该只使用嵌套循环。 (除此之外,您似乎没有基本情况,因此您的递归将永远不会结束。)

def scraper(pageNum): 
    while pageNum < SOME_TARGET_VALUE: 
        req = Request("http://www.someurl.com/Search/page="+str(pageNum)+"&facet_Category=20", headers={"User-Agent": "Mozilla/5.0"}) 
        html = urlopen(req).read() 
        bsObj = BeautifulSoup(html) 
        for result in bsObj.select("h2 a"): 
            print(result["href"]) 
        pageNum += 1