Как заставить мой скрипт Python перейти на URL, скачать последний файл - PullRequest
0 голосов
/ 11 ноября 2018

Я написал этот скрипт на 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-адрес и загрузить последнюю электронную таблицу, чтобы использовать ее в качестве рейтинга. Xls

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Я не уверен, что вы имеете в виду под «последней» таблицей, но у вас есть различные варианты загрузки файлов из сети. Я бы предложил использовать знаменитую библиотеку запросов, которая очень, очень проста в использовании.

Do

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)

Таким образом, можно было бы проверить, является ли ваш недавно загруженный ratings.xls более новым, чем ранее загруженный rankins.xls, сравнив их с использованием хеш-кода или около того.

РЕДАКТИРОВАТЬ: OP попросил метод для извлечения последней XLS-файл со страницы. Я бы посоветовал проанализировать html для hrefs, содержащих xls (так как 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])
0 голосов
/ 11 ноября 2018

Вы можете использовать библиотеку запросы . Например,

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 для получения рейтинга за последний месяц.

...