使用Python Beautiful Soup爬取网页返回None的问题求助
问题原因
该网站的会员表格采用动态加载机制,直接通过requests.get()获取的初始页面源码中并不包含目标表格内容。表格数据是页面加载完成后,通过AJAX异步请求从后端接口获取的,因此BeautifulSoup无法在初始HTML中找到对应表格元素,返回None。
解决方案
通过浏览器抓包找到加载会员数据的API接口,直接请求该接口获取结构化数据,再整理为表格。以下是可行代码:
import requests import pandas as pd # 抓包得到的会员数据接口地址 api_url = "https://bni-india.in/API/Chapter/GetChapterMemberList" # 请求头,模拟前端AJAX请求 headers = { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } # 请求参数,对应目标章节的ID payload = { "chapterId": "P+IWaeuOSfF3Mxm03FLSzA==", "page": 1, "pageSize": 100 # 可调整数值获取更多数据,若数据分页则循环修改page参数 } # 发送POST请求获取数据 response = requests.post(api_url, json=payload, headers=headers) data = response.json() # 转换为DataFrame并输出 member_df = pd.DataFrame(data['data']) print(member_df.head()) # 保存为本地文件 member_df.to_csv('bni_alpha_members.csv', index=False)
操作提示
- 抓包步骤:打开浏览器开发者工具(快捷键F12),切换至「网络」面板,刷新页面后筛选「XHR」类型请求,找到返回会员列表的接口,复制其URL、请求头及参数。
- 若会员数据分页,可通过循环修改
payload中的page参数,依次请求各页数据后合并成完整表格。
内容的提问来源于stack exchange,提问作者user20658595
相关产品推荐
相关产品推荐

