[英]Double for loop to extract data from several urls
我正在嘗試從網站獲取數據以將它們寫入要處理的 excel 文件。 我有一個主要的 url 方案,我必須相應地更改“年份”和“參考號”:
http://calcio-seriea.net/presenze/ “年份”/“參考號”/
我已經嘗試編寫部分代碼,但我有一個問題。 首先,我應該保持年份不變,而參考數取18的每個數字。然后年份增加1,參考數再次取18的每個數字。我試着給一個例子:
Y = 1998 RN = [1142:1159];
Y = 1999 RN = [1160:1177];
Y = 2000 RN = [1178:1195];
Y = … RN = …
然后從 2004 年開始,間隔變為 20,所以
Y = 2004 RN = [1250:1269];
Y = 2005 RN = [1270:1289];
到年 = 包括 2019 年。
這是我到目前為止可以制作的代碼:
import pandas as pd
year = str(1998)
all_items = []
for i in range(1142, 1159):
pattern = "http://calcio-seriea.net/presenze/" + year + "/" + str(i) + "/"
df = pd.read_html(pattern)[6]
all_items.append(df)
pd.DataFrame(all_items).to_csv(r"C:\Users\glcve\Desktop\data.csv", index = False, header = False)
print("Done!")
提前感謝大家
所缺少的只是pd.concat
中的 pd.concat,但是當您一遍又一遍地調用相同的方法時,讓我們編寫一個 function 以便您可以保持代碼干燥。
def create_html_df(base_url, year,range_nums = ()):
"""
Returns a dataframe from a url/html table
base_url : the url to target
year : the target year.
range_nums = the range of numbers i.e (1,50)
"""
start, stop = range_nums
url_pat = [f"{base_url}/{year}/{i}" for i in range(start,stop)]
dfs = []
for each_url in url_pat:
df = pd.read_html(each_url)[6]
dfs.append(df)
return pd.concat(dfs)
final_df = create_html_df(base_url = "http://calcio-seriea.net/presenze/",
year = 1998,
range_nums = (1142, 1159))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.