Python从网页中提取html表



该页面上的表格需要每天刮取。我们试图保持抓取尽可能简单(健壮),所以没有问题的代码运行在我们的服务器上。希望避开Selenium:

import requests
import pandas as pd
page_list = pd.read_html('https://www.ncaa.com/rankings/basketball-women/d1/ncaa-womens-basketball-net-rankings')
page_df = pd.DataFrame(page_list) 
# won't convert to df (ValueError: Must pass 2-d input. shape=(1, 356, 9)
r = requests.get('https://www.ncaa.com/rankings/basketball-women/d1/ncaa-womens-basketball-net-rankings')
# not sure what to do with response

page_list很接近,但它是一个三维列表。我们如何将其转换为二维列表或pandas数据框架?

pd.read_html返回的不是一个DataFrame,而是一个DataFrame列表。使用page_list[0]获取第一个数据帧:

page_df = pd.DataFrame(page_list[0])

来自文档:

读取HTML表到DataFrame对象列表

不需要做page_df = pd.DataFrame(page_list[0])。其实可以把这个改成page_df = page_list[0]:

page_list = pd.read_html('https://www.ncaa.com/rankings/basketball-women/d1/ncaa-womens-basketball-net-rankings')
page_df = page_list[0]

最新更新