Python从网页提取表格问题:仅获前两行如何解决?
问题解决:提取网页完整表格的修正方案
你的代码存在两个核心问题:
- 变量引用错误:
pd.read_html()返回的是网页中所有表格组成的列表(df_list),但你直接调用了未定义的df变量,实际需要从列表中选取目标表格的索引。 - 请求未携带必要头信息:该网站可能拦截无浏览器标识的请求,导致返回不完整页面,只拿到前两行数据。
修正后的代码
import requests import pandas as pd url = 'https://www.wikirating.com/list-of-countries-by-credit-rating/' # 添加请求头模拟浏览器访问,避免被反爬拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } response = requests.get(url, headers=headers) response.raise_for_status() # 捕获请求失败的异常 # 读取网页中所有表格,目标表格是列表的第1个元素(索引从0开始) df_list = pd.read_html(response.text) df = df_list[1] # df_list[0]是页面顶部的小型统计表格,df_list[1]为完整国家评级表 print(df) df.to_csv('country_credit_ratings.csv', index=False)
关键说明
- 请求头设置:通过
User-Agent模拟浏览器请求,确保获取完整的页面内容,避免被网站反爬机制拦截。 - 表格索引选择:网页包含多个表格,需根据实际结构选取对应索引的表格,这里
df_list[1]才是你需要的完整国家信用评级数据。 - 异常捕获:
response.raise_for_status()会在请求返回错误状态码时抛出异常,方便快速排查问题。
内容的提问来源于stack exchange,提问作者Lisa
相关产品推荐
相关产品推荐

