簡體   English   中英

雙 for 循環從多個 url 中提取數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM