VSCode中Jupyter Notebook循环内Python print语句无输出求助
问题解决:VSCode Jupyter Notebook中循环内print无输出
核心原因
你的循环代码根本没执行——soup.find_all('div', class_='results')没有匹配到任何元素,返回了空列表,所以for循环一次都没跑。外部的print(msg)正常是因为它不在循环里,不受影响。
修复步骤
确认请求是否成功
在获取页面后添加状态码检查,确保网页请求正常:page = requests.get(url, headers=HEADERS) print(page.status_code) # 正常应返回200修正元素选择器
查看Yellow Pages实际网页结构,商家列表的容器类名不是results,而是result(每个单独商家对应的div)。修改代码:# 替换原有的main赋值语句 main = soup.find_all('div', class_='result')添加异常处理(可选)
避免因个别商家缺失business-name标签导致代码崩溃:for m in main: restaurant_name_tag = m.find('a', class_='business-name') if restaurant_name_tag: print(restaurant_name_tag.text) else: print("未找到商家名称")
完整修正后的代码
import requests from bs4 import BeautifulSoup import pandas as pd import time import re HEADERS = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/101.0.4951.54 Safari/537.36', 'Connection': 'keep-alive', 'Referer': 'https://google.com', 'DNT': '1', 'Accept-Language': 'en-GB,en;q=0.5' } url = 'https://www.yellowpages.com/los-angeles-ca/restaurants?page=1' page = requests.get(url, headers=HEADERS) print(page.status_code) # 确认请求成功 soup = BeautifulSoup(page.content, 'html.parser') main = soup.find_all('div', class_='result') # 修正选择器 for m in main: restaurant_name_tag = m.find('a', class_='business-name') if restaurant_name_tag: print(restaurant_name_tag.text) msg = 'Hello World!' print(msg)
内容的提问来源于stack exchange,提问作者Kbrosal
相关产品推荐
相关产品推荐

