Рубрики
Без рубрики

Как скачать файл через https в Python?

Сводка: загрузите файл через Интернет, используя следующие шаги в Python. Import Libary RequestsDefine URL Stringget File File Data из файла файлов URLSTORE в файле Объект файла на вашем компьютере Вот как вы можете сделать это, чтобы загрузить Facebook Favicon (Source): в начале нашей борьбы с помощью веб-соскажания вы можете иметь … Как скачать Файл через https в python? Читать далее “

Автор оригинала: Rafal Jasionowski.

Резюме : Загрузите файл через Интернет, используя следующие шаги в Python.

  • Импорт библиотеки Запросы
  • Определить строку URL.
  • Получить файловые данные от URL
  • Храните данные файла в файловом объекте на вашем компьютере

Вот как вы можете сделать это, чтобы скачать Facebook Favicon ( Источник ):

В начале нашей борьбы с помощью Web Scraping у вас могут быть проблемы с загрузкой файлов с помощью Python. Однако эта статья предоставит вам несколько методов, которые вы можете использовать для загрузки, например, крышки книги со страницы.

В качестве примера мы будем использовать страницы, которые не запрещают соскоб: http://books.toscrape.com/catalogue/category/books_1/index.html.

Как проверить, что мне разрешено лома?

Чтобы проверить, что именно вам не разрешено лома, вы должны добавить "Robots.txt" в конце в URL страницы. Это должно выглядеть так: https://www.google.com/robots.txt Отказ Если страница не указывается, что можно отключить, вы должны проверить его Условия.

Хорошо, конец введения, давайте начнем!

Как установить модули в Python?

Прежде чем вы сможете использовать любой метод, вы должны сначала установить модуль (если у вас его нет), используя:

pip install module_name 

Например:

pip install requests

Как получить ссылку на файл?

Чтобы получить ссылку на файл, навигация по курсору и щелкните правой кнопкой мыши все, что вы ищете, и нажмите «Проверка элемента»:

Затем исходный код страницы появится и немедленно указывает на элемент, который интересует нас:

Далее мы должны скопировать ссылку на этот файл:

В зависимости от того, как выглядит ссылка (будь то полная или нет [если нет, мы должны подготовить его для использования]), мы вставляем его в панель поиска, чтобы проверить, есть ли это то, что мы хотим:

И если это так, мы используем один из предусмотренных методов.

Метод 1 – запросы модуля

Сначала мы должны импортировать модуль запросов, а затем создавать переменные.

import requests

url_to_the_file = 'http://books.toscrape.com/media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg'
r = requests.get(url_to_the_file)

Как только мы создали переменные, мы должны открыть файл в режиме двоичного письма и сохранить наш файл под каким-то именем с расширением, который соответствует файлу, который мы хотим скачать (если мы хотим скачать фото, расширение должно быть, например, JPG).

with open('A light in the attic – book cover.jpg', 'wb') as f:
    f.write(r.content)

Полный код:

import requests

url_to_the_file = 'http://books.toscrape.com/media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg'
r = requests.get(url_to_the_file)
with open('A light in the attic – book cover.jpg', 'wb') as f:
    f.write(r.content)

После выполнения кода изображения появится в текущем рабочем каталоге. С помощью этого метода можно легко скачать одно изображение, но, что, если мы хотим загрузить несколько файлов одновременно? Пойдем на следующий метод, чтобы узнать его!

Метод 2 – Запросы Модуль и красивый класс из модуля BS4

Если вы хотите скачать несколько файлов с одной страницы, этот метод идеален. В начале мы импортируем Запросы и BS4 Модули (из которых мы берем класс BeautifulSoup) и создавать переменные:

  • URL – Ссылка на страницу, от которой вы хотите скачать файлы,
  • Результат – ссылка на страницу и его HTML-код,
  • Суп – CountrySoup Class Object (мы используем его, чтобы найти элементы),
  • Данные – данные, которые нас интересуют, в этом случае строки HTML-кода, начинающиеся с и заканчиваются с помощью (эти строки кода, имеют атрибут Href, который имеет ссылку на что-то).
import requests
from bs4 import BeautifulSoup

url = 'https://telugump3audio.com/devi-1999-songs.html'
result = requests.get(url).content
soup = BeautifulSoup(result, 'html.parser')
data = soup.find_all('a')

Затем мы должны написать функцию, которая проверяет, имеют ли ссылки на расширение MP3, а затем одинаковую функцию загружают файлы с этим расширением:

def get_mp3_files(data_):
    links = []
    names_of_mp3_files = []
    for link in data_:
        if '.mp3' in link['href']:
            print(link['href'])
            links.append(link['href'])
            names_of_mp3_files.append(link.text)

    if len(names_of_mp3_files) == 0:
        raise Exception

    else:
        for place in range(len(links)):
            with open(names_of_mp3_files[place], 'wb') as f:
                content = requests.get(links[place]).content
                f.write(content)

Полный код:

import requests
from bs4 import BeautifulSoup

def get_mp3_files(data_):
    links = []
    names_of_mp3_files = []
    for link in data_:
        if '.mp3' in link['href']:
            print(link['href'])
            links.append(link['href'])
            names_of_mp3_files.append(link.text)

    if len(names_of_mp3_files) == 0:
        raise Exception

    else:
        for place in range(len(links)):
            with open(names_of_mp3_files[place], 'wb') as f:
                content = requests.get(links[place]).content
                f.write(content)

url = 'https://telugump3audio.com/devi-1999-songs.html'
result = requests.get(url).content
soup = BeautifulSoup(result, 'html.parser')
data = soup.find_all('a')

get_mp3_files(data)

Используя этот метод, мы можем скачать даже десятки файлов!

Метод 3 – модуль Urllib

Модуль Urllib предоставляется по умолчанию в Python, поэтому вам не нужно его устанавливать перед использованием.

Во-первых, мы импортируем Urllib.request , потому что он содержит UrlretRiev () Функция, которая позволяет нам загружать изображения или музыкальные файлы. Эта функция имеет 4 аргумента (1 обязательных и 3 необязательно), однако первые два наиболее важны:

  • URL – Ссылка на файл, который вы хотите получить,
  • Имя файла – имя, при котором вы хотите сохранить файл.
import urllib.request

url = 'http://books.toscrape.com/media/cache/' \
      '2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg'
file_name = 'A light in the attic.jpg'
urllib.request.urlretrieve(url, filename)

Примечание: Согласно документации, URLLIB.REQUEST.URLRETREVE является «устаревшим интерфейсом» и «может стать устаревшим в будущем»

Тем не менее, есть еще один способ загрузки файла с помощью этого модуля:

import urllib.request


url = 'http://books.toscrape.com/media/cache/' \
      '2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg'
file_name = 'A light in the attic.jpg'
response = urllib.request.urlopen(url)
html = response.read()
with open(filename, 'wb') as f:
    f.write(html)

Используя этот метод, мы также импортируем Urllib.request , но мы используем другие функции, сначала Urlopen ( ) для подключения к странице, то Читать () Чтобы сохранить HTML-код страницы в переменной, затем мы открываем файл с именем, сохраненным в переменной имени файла и сохранить HTML-код файла в двоичной форме. Таким образом, у нас есть файл, который мы хотели!

Метод 4 – Модуль Dload

  • В Python версия .6 Вы также можете использовать Dload Модуль для загрузки файла. Сохранить () Функция имеет 3 аргумента (1 обязательный, 2 необязательно):
  • URL – Ссылка на файл,
  • путь – имя, под которым вы хотите сохранить свой файл, если вы не укажете имя, имя будет зависеть от окончания ссылки на файл (в нашем случае файл будет называться 2CDAD67C44B002E8B.jpg Так лучше указать ваше имя файла),
  • перезаписать – Если в нашем рабочем каталоге есть файл с одним именным именем, он перезапишет его, если он равен true, а если false, он не скажет файл).
import dload

url = 'http://books.toscrape.com/media/cache/' \
      '2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg'
filename = 'A light in the attic.jpg'

dload.save(url, filename)

Резюме

Вы узнали об объяснении того, как проверить, есть ли у нас разрешение на скачивание файлов. Вы узнали, что есть 4 способа загрузки файлов с использованием модулей, названных в порядке: запросы, запросы в BeautifulSoup, Urllib в Dload.

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