Я хочу стянуть информацию с сайта. Как это сделать?
Допустим, нам нужно получить данные с сайта, сбор которых вручную нецелесообразен или невозможен из-за объёма. В таком случае мы можем автоматизировать процесс, используя инструменты, описанные далее.
Библиотека requests
Python-библиотека для выполнения запросов к серверу и обработки ответов. Фундамент скрипта для парсинга и наше основное оружие. Пользуясь данной библиотекой мы получаем содержимое страницы в виде html для дальнейшего парсинга.
import requests response = requests.get('https://ya.ru') # get-запрос print(response.text) # вывод содержимого страницы payload = 'key1': 'value1', 'key2': 'value2'> response = requests.get('http://httpbin.org/get', params=payload) # запрос с параметрами headers = 'user-agent': 'my-app/0.0.1'> response = requests.get(url, headers=headers) # запрос с определенными html заголовками
API
Application programming interface — программный интерфейс приложения, предоставляемый владельцем веб-приложения для других разработчиков. Отсутствие API, способного удовлетворить наши нужды — первое в чем стоит убедиться прежде чем бросаться анализировать исходный код страницы и писать для нее парсер. Множество популярных сайтов имеет собственное api и документацию, которая объясняет как им пользоваться. Мы можем использовать api таким образом — формируем http-запрос согласно документации, и получаем ответ при помощи requests.
BS4
Beautifulsoup4 — это библиотека для парсинга html и xml документов. Позволяет получить доступ напрямую к содержимому любых тегов в html.
from bs4 import BeautifulSoup soup = BeautifulSoup(raw_html, 'html.parser') print(soup.find("p", class_="some-class").text) # вывод содержимого тэга 'p' классом 'some-class'
Selenium Web Driver
Данные на сайте могут генерироваться динамически при помощи javascript. В таком случае спарсить эти данные силами requests+bs4 не удастся. Дело в том, что bs4 парсит исходный код страницы, не исполняя js. Для исполнения js кода и получения страницы, идентичной той, которую мы видим в браузере, можно использовать selenium web driver — это набор драйверов для различных браузеров, снабжающийся библиотеками для работы с этими драйверами.
А что делать, если там авторизация?
Предварительно авторизоваться, отправив post-запрос и инициировать сессию:
session = requests.Session() data = "login_username":"login", "login_password":"password"> url = "http://site.com/login.php" response = session.post(url, data=data)
А что, если сайт банит за много запросов?
- Установить задержку между запросами:
response = requests.get(url, timeout=(10, 0.01)) # таймаут на соединения, таймаут на чтение (в секундах)
- Притвориться браузером, используя selenium web driver или передав содержимое заголовка user-agent, формируя запрос:
user_agent = ('Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) ' 'Gecko/20100101 Firefox/50.0') request = requests.get(url, headers='User-Agent':user_agent>)
- Использовать прокси:
request = requests.get(url, proxies="http":"http://10.10.1.10:3128">)
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Скачивание файлов из Интернета с использованием Python
В современном мире часто возникает необходимость скачивания файлов из интернета. Существует множество инструментов и библиотек, которые позволяют это делать, однако они могут быть сложными для новичков и тех, кто только начинает изучать язык Python. В этой статье будет показан простой и эффективный способ скачивания файлов из Интернета с использованием Python.
Допустим, существует задача скачивания mp3-файла с некоторого сайта. Это может быть необходимо для создания подкаста или сбора музыкальной коллекции. Обычно такие задачи решаются с помощью специализированных утилит, однако они могут быть неудобными в использовании или требовать установки дополнительного программного обеспечения. Вместо этого можно использовать Python, который предоставляет высокоуровневые библиотеки для работы с сетью и файлами.
Одной из таких библиотек является requests . Она предоставляет простой в использовании интерфейс для отправки HTTP-запросов и обработки ответов. Для скачивания файла можно использовать метод get() , который отправляет GET-запрос на указанный URL и возвращает ответ сервера. Затем полученные данные можно записать в файл с помощью стандартных средств Python.
Вот простой пример кода, который скачивает mp3-файл по URL:
import requests url = 'http://example.com/song.mp3' response = requests.get(url) with open('song.mp3', 'wb') as file: file.write(response.content)
В этом коде сначала импортируется библиотека requests , затем задается URL mp3-файла. Далее отправляется GET-запрос на этот URL и получается ответ сервера. Затем открывается файл song.mp3 на запись в двоичном режиме, и в него записывается содержимое ответа сервера.
Таким образом, скачивание файлов из Интернета с использованием Python является простой и эффективной задачей, которую можно легко решить с помощью библиотеки requests .
Как получить данные из интернета?
Всем привет !
Я написал программу который показывает простые скользящие, но не могу получать данные из интернета .
Мне нужно скачать из интернета дату и цену на нефть . Как мне это сделать подскажите !
Спасибо заранее !
- Вопрос задан более трёх лет назад
- 154 просмотра
2 комментария
Простой 2 комментария

Владимир Коротенко @firedragon
PyCurl пробовали?

origami1024 @origami1024
Только тег графика тут вообще не в тему. Тег парсинг бы подошел
Решения вопроса 1

origami1024 @origami1024
went out for a night walk
#requests - для скачки странички import requests #html из lxml - чтобы парсить DOM дерево from lxml import html #забираем страничку с нефтью raw = requests.get("https://yandex.ru/news/quotes/1006.html") #строим из нее html дерево dom = html.fromstring(raw.content) #забираем xpath-ом ноды с датами и ценами из дерева dates = dom.xpath('//td[@class="quote__date"]') prices = dom.xpath('//td[@class="quote__value"]') #выводим на экран for d,p in zip(dates, prices): print(d.text_content(), p.text_content())
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Скрапинг веб-сайтов: все, что вам нужно знать о сборе данных из интернета
Информация играет важнейшую роль во многих сферах, а возможность получать актуальные данные становится ценным ресурсом. Именно здесь скрапинг сайтов, или сбор данных из страниц, приходит на помощь. В этой статье мы рассмотрим, что такое скрапинг, как он работает и как его можно использовать с помощью языка программирования Python. Такие знания помогут в разработке сайтов.
Приходите на наш бесплатный вебинар по разработке без кода, чтобы задать вопросы, узнать больше про зерокодинг и попробовать себя в новой профессии!
Что такое скрапинг?
Скрапинг сайтов — это процесс извлечения информации со страниц. В основе этого процесса лежит анализ HTML-кода страницы и извлечение нужных данных. Например, вы можете собрать информацию о продуктах с онлайн-магазина, извлечь новости с новостника или получить статистические данные для анализа.
Как работает скрапинг?
Процесс начинается с отправки HTTP-запроса к сайту, чтобы получить HTML-код страницы. Затем этот код анализируется с помощью специальных инструментов, называемых парсерами, которые позволяют извлекать нужные данные. Python предлагает несколько библиотек, включая BeautifulSoup и Scrapy, которые значительно упрощают этот процесс.
Использование Python для скрапинга
Python – популярный языков программирования для скрапинга сайтов. Вот некоторые из самых популярных инструментов и библиотек:
- BeautifulSoup: библиотека является мощным инструментом для парсинга HTML-кода. Она позволяет легко найти нужные элементы на странице и извлечь данные из них.
- Scrapy: полноценный фреймворк, который предлагает гибкие инструменты для создания скраперов.
- Requests: является неотъемлемой частью скраперов. Позволяет работать с HTTP-запросами.
Процесс скрапинга сайтов
Давайте рассмотрим общий процесс скрапинга сайтов с использованием Python и BeautifulSoup:
- Отправка HTTP-запроса: Сначала вам нужно отправить HTTP-запрос к сайту, чтобы получить HTML-код страницы. Вы можете использовать библиотеку Requests для выполнения этой задачи.
- Получение HTML-кода: После отправки запроса вы получите HTML-код страницы в виде ответа. Вы можете сохранить его в переменную для дальнейшего анализа.
- Парсинг HTML-кода: вы можете использовать методы поиска, такие как `find()` и `find_all()`, чтобы найти теги и атрибуты, содержащие нужные данные.
- Извлечение данных: После нахождения нужных элементов вы можете извлечь данные из них. Например, для получения заголовков используйте метод `text` для извлечения текстового содержимого этих элементов.
- Обработка данных: После извлечения данных вы можете обработать их по своему усмотрению. Например, вы можете сохранить данные в файл, выполнить анализ или использовать их для создания API.
Пример кода
Вот простой пример скрипта на языке Python, который демонстрирует базовый процесс скрапинга сайта с использованием библиотеки BeautifulSoup:
from bs4 import BeautifulSoup
#Отправка запроса и получение текста страницы. Здесь используем метод .get() и свойство text
#создаем спискок для хранения результатов — каждый элемент содержит ровно одну книгу
#в словать будем помещать информацию ровно об одной книге, а дальше этот словарь будем писать в список
dict_book = dict.fromkeys([‘author_name-no_js’, ‘bookname descr-no_js’, ‘url’], 0)
#в цикле обрабатываем найденные записи
for item in books:
#информацию о каждой книге пишем в словарь
dict_book[‘author_name-no_js’] = item.find(‘a’, attrs = ).get_text(strip = True)
dict_book[‘bookname descr-no_js’] = item.find(‘a’, attrs = ).get_text(strip = True)
dict_book[‘url’] = ‘https://www.litres.ru/’+ item.find(‘a’).get(‘href’)
#словрь пишем в список
В этом коде мы отправляем запрос на Литрес и оттуда получаем список книг с автором, названием, жанром и ссылкой.
Правовые аспекты
При использовании скрапинга важно учитывать правовые аспекты и соблюдать правила каждого ресурса. Некоторые ресурсы могут запрещать это в своих правилах использования, поэтому перед началом сбора важно прочитать их политику конфиденциальности и условия предоставления услуг. Не используйте много запросов.
Заключение
Скрапинг веб-сайтов – это инструмент для сбора данных из интернета. Его можно использовать для получения актуальной информации, а легко реализовать с помощью Python и его библиотек.