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