打印功能在继续之前不会打印完整列表
Print function won't print the complete list before moving on
我试图打印出结果页面的链接列表,然后在将变量 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
,所以一旦您打印出第一个 link.
,递归就会发生
您可以通过将递归回调移回一个缩进来解决此问题,但请注意,递归并不是解决此类问题的真正好方法 - 您实际上应该只使用嵌套循环。 (除此之外,您似乎没有基本情况,因此您的递归将永远不会结束。)
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
从您的代码来看,您似乎是在 for 循环中调用 scraper 函数来打印链接。只需将它移到 for 循环之外就可以了。
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)
我试图打印出结果页面的链接列表,然后在将变量 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
,所以一旦您打印出第一个 link.
您可以通过将递归回调移回一个缩进来解决此问题,但请注意,递归并不是解决此类问题的真正好方法 - 您实际上应该只使用嵌套循环。 (除此之外,您似乎没有基本情况,因此您的递归将永远不会结束。)
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
从您的代码来看,您似乎是在 for 循环中调用 scraper 函数来打印链接。只需将它移到 for 循环之外就可以了。
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)