繁体   English   中英

如何获取我的Python脚本以转到URL,下载最新文件

[英]How to get my Python script to go to a URL, download the latest file

我已经编写了这个Python脚本来创建一张表格,其中仅包含来自我们国家排名中的体育俱乐部的运动员。 目前,我必须下载排名文件,然后重新命名。

#import the writer
import xlwt
#import the reader
import xlrd
#open the rankings spreadsheet
book = xlrd.open_workbook('rankings.xls')
#open the first sheet
first_sheet = book.sheet_by_index(0)
#print the values in the second column of the first sheet
print first_sheet.col_values(1)


#open the spreadsheet
workbook = xlwt.Workbook()
#add a sheet named "Club BFA ranking"
worksheet1 = workbook.add_sheet("Club BFA ranking")
#in cell 0,0 (first cell of the first row) write "Ranking"
worksheet1.write(0, 0, "Ranking")
#in cell 0,1 (second cell of the first row) write "Name"
worksheet1.write(0, 1, "Name")    
#save and create the spreadsheet file
workbook.save("saxons.xls")

name = []
rank = []
for i in range(first_sheet.nrows):
    #print(first_sheet.cell_value(i,3)) 
    if('Saxon' in first_sheet.cell_value(i,3)):  
        name.append(first_sheet.cell_value(i,1))
        rank.append(first_sheet.cell_value(i,8))    
        print('a')
for j in range(len(name)):
    worksheet1.write(j+1,0,rank[j])
    worksheet1.write(j+1,1,name[j])


workbook.save("saxons.xls")

在下一次迭代中,我希望它转到特定的URL并下载最新的电子表格以用作ranks.xls

我怎样才能做到这一点?

您可以使用请求库。 例如,

import requests

url = "YOUR_URL" 
downloaded_file = requests.get(url)

with open("YOUR_PATH/rankings.xls", 'wb') as file:  
    file.write(downloaded_file.content)

编辑:您提到要下载文件的最新版本,可以使用以下时间填写月份和年份。

time.strftime("https://www.britishfencing.com/wp-content/uploads/%Y/%m/ranking_file.xls")

作为YOUR_URL以获取最近一个月的排名。

我不确定您对“最新”电子表格的含义,但是您可以通过多种方式从网上下载文件。 我建议使用著名的请求库,该库非常非常易于使用。

做一个

pip install requests

在做一个之前

import requests
url = "http://foobar.com/rankings.xls"
r = requests.get(url)

然后将内容推入文件

with open('./rankings.xls', 'w') as f:
    f.write(r.content)

因此,可以通过使用哈希码等对它们进行比较来检查您最近下载的ranks.xls是否比以前下载的rankins.xls更新。

编辑:OP要求一种从页面中提取最新xls文件的方法。 我建议解析html以获取包含xls的href(因为OP要解析的页面没有为要下载的xls文件提供通用格式)。

最好的方法是BeautifulSoup:

 pip install bs4

 from bs4 import BeautifulSoup
 import requests

 x=requests.get('https://www.britishfencing.com/results-rankings/mens-foil-ranking-archive/')
 soup = BeautifulSoup(x.content, 'html.parser')
 result = [ xls['href'] for xls in soup.find_all('a', href=True) if 'xls' in xls['href']]

 print(result[0])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM