You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何爬取Airtel页面时,我的Python爬虫返回空列表?

解决Airtel页面爬虫返回空列表的问题

问题原因

你遇到的空列表问题主要有两个核心原因:

  • 你用requests获取的是页面静态HTML源码,但Airtel的这个页面依赖JavaScript动态渲染内容,right-content这类元素是页面加载后通过JS生成的,静态源码里根本不存在,所以find_all找不到。
  • 直接用requests.get发起请求,容易被网站反爬机制识别为非浏览器访问,返回的内容不完整或被拦截。

解决方案

方法1:添加请求头伪装浏览器

先尝试给请求添加浏览器标识的User-Agent,模拟正常浏览器访问,看看能否获取到完整静态内容:

import requests
from bs4 import BeautifulSoup

url = "https://www.airtel.in/recharge-online?icid=header_new"
# 用主流浏览器的User-Agent伪装
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}

source = requests.get(url, headers=headers)
soup = BeautifulSoup(source.text, "html.parser")
info = soup.find_all(class_="right-content")
print(info)

如果还是返回空列表,说明内容是完全动态渲染的,需要用方法2。

方法2:用Selenium模拟浏览器渲染

Selenium可以模拟真实浏览器的加载过程,等待JavaScript执行完成后再获取页面内容:
首先安装依赖包和浏览器驱动(以Chrome为例):

pip install selenium

然后编写代码:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
import time

url = "https://www.airtel.in/recharge-online?icid=header_new"

# 配置Chrome无头模式(不弹出浏览器窗口)
chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36")

driver = webdriver.Chrome(options=chrome_options)
driver.get(url)

# 等待页面加载完成(可根据实际加载速度调整等待时间)
time.sleep(3)

# 获取渲染后的完整页面源码
page_source = driver.page_source
soup = BeautifulSoup(page_source, "html.parser")
info = soup.find_all(class_="right-content")
print(info)

driver.quit()

额外建议

  • 可以手动打开页面,通过浏览器开发者工具的Network标签,查找是否有直接返回套餐数据的API接口。直接请求API会比爬取页面HTML更高效、更稳定。
  • 爬取前查看网站的robots.txt规则,控制爬取频率,避免触发反爬机制导致IP被封禁。

内容的提问来源于stack exchange,提问作者Avinash kumar Raushan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:25:35