【发布时间】:2022-01-01 04:42:37
【问题描述】:
我正在尝试从 https://etfdb.com/etfs/sector/technology/#etfs&sort_name=assets_under_management&sort_order=desc&page=1 中抓取一些 ETF 股票信息作为个人项目。
我想要做的是抓取每个页面显示的表格,但即使我更新了 url 中的页码,它似乎总是返回相同的值。是否有某种限制或与我没有考虑的网页有关?我该怎么做才能从上面的链接中抓取第 1 页到第 5 页的表格?
我尝试使用的代码如下:
import pandas as pd
import requests
def etf_table_scraper(industry):
# instatiate empty dataframe
df = pd.DataFrame()
# cycle through the pages
for page in range(1, 10):
url = f"https://etfdb.com/etfs/sector/{industry}/#etfs__returns&sort_name=symbol&sort_order=asc&page={page}"
r = requests.get(url)
df_list = pd.read_html(r.text)[0] # this parses all the tables in webpages to a list
# if first page, append
if page == 1:
df = df.append(df_list[0].iloc[:-1])
# otherwise check to see if there are overlaps
elif df_list.loc[0, 'Symbol'] not in df['Symbol'].unique():
df = df.append(df_list.iloc[:-1])
else:
break
return df
【问题讨论】:
标签: python pandas web-scraping beautifulsoup