Загрузите последнюю версию файла с веб-сайта в определенное место, используя Python - PullRequest
0 голосов
/ 17 сентября 2018

Я изучаю селен и веб-скребинг в Python (V3.6.6, версия x64).Я пытаюсь написать скрипт, который при запуске автоматически загружает последнюю доступную win64 версию geckodriver (v0.22.0, на момент публикации этого вопроса) из URL https://github.com/mozilla/geckodriver/releases в определенное место на моемПК с Windows.

Моя проблема в том, что когда я смотрю на источник страницы с помощью браузера Mozilla Firefox, идентификатор и класс для конкретной версии, которую я пытаюсь загрузить, совпадают со всеми другими доступными версиями.Я не могу отфильтровать конкретный раздел и получить href, чтобы файл мог быть загружен.Я, конечно, что-то упускаю, но, несмотря на несколько поисков в Интернете, я не могу понять, что я делаю неправильно.Я прошу экспертов в Stackoverflow направить / исправить меня в следующих шагах.Ниже приведены вещи, которые я пытаюсь решить:

1) Загрузите win64-версию последней версии geckodriver

2) Файл должен быть загружен в C: \ Python

3) Какпонять, что программа полностью загрузила файл, чтобы продолжить его выполнение?

from urllib.request import urlopen, urlretrieve
from bs4 import BeautifulSoup

# Define page where geckodriver can be downloaded
url = "https://github.com/mozilla/geckodriver/releases"

try:
    # Query the website and return the html to the variable ‘page’
    page = urlopen(url)
except:
    # Thow message for any unexpected behaviour when loading page
    print("Unable to download geckodriver. Hit any key to exit program.")
    user_input = input()
    exit()

# Parse the html using beautifulsoup and store in variable `soup`
soup = BeautifulSoup(page, "html.parser")

# Trying to search and filter latest win64 version
result = soup.find_all('a', {'class': 'd-flex flex-items-center'})

1 Ответ

0 голосов
/ 18 сентября 2018

Прежде всего, найдите последнюю версию и затем получите ссылку на win64:

latest = soup.find('div', {'class': 'release-entry'})
results = latest.find_all('a', {'class': 'd-flex flex-items-center'})
for result in results:
    if 'geckodriver/releases/download/' in result.get('href) and 'win64.zip' in result.get('href):
        print (result.get('href))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...