В моей серии постов будет описан мой путь от Junior’a до Middle’a, а потом возможно даже до Senior’a. Программировать будем на Python.
P.S. Документация к некоторым малоизвестным библиотекам будет прикреплена в конце.
Кратко о себе: Python начал изучать два года назад, особых продвижений не было.
Разочарованием стали сами основы, поскольку учил я их полтора года. Сейчас же углубленно изучаю язык, понимаю его структуру и как все происходит. В следующих статьях буду выкладывать код, использую все новые, и новые библиотеки, а их как вы знаете у питона очень много 🙂
С чего бы начать? Пару месяцев назад я написал свой первый парсер. Оказалось, что писать парсеры довольно просто и на них даже можно зарабатывать. Пока что покажу пару примеров, используя стек из bs4 + requests. Парсить будем наш любимый Хабр.
#для начала импортируем нужные нам модули from bs4 import BeautifulSoup as bs import requests from fake_useragent import UserAgent
Не уверен, что все знакомы с библиотекой fake_useragent. Довольно удобна для парсинга, создает фейк user-agent’a.
ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox}
Это следующий небольшой блок нашего кода. В первой строке, мы создали переменную ua, которая использует методы класса UserAgent. Во второй строке, мы создали словарь, который в будущем поможет нам при парсинге.
Теперь создаем саму функцию для парсинга.
def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error")
Данная функция будет парсить ссылку, которую мы укажем на наличие тега с классом «post__title_link».
Самый простой способ сохранить данные — сохранить их в файл. Так и сделаем.
url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
В конце получаем файл, в котором записаны названия и ссылки постов, которые мы собрали с первой страницы.
Исходный(полный) код, только уже без комментариев:
from bs4 import BeautifulSoup as bs from fake_useragent import UserAgent import requests ua = UserAgent() headers = {'accept': '*/*', 'user-agent': ua.firefox} def without_post(url, headers): response = requests.get(url, headers=headers) if response.status_code == 200: soup = bs(response.text, 'html.parser') links = {} for i in soup.find_all('a', {'class': 'post__title_link'}): links.update({i.text: i.get('href')}) return links else: print("Connection Error") url = "https://habr.com/ru/all/" links = without_post(url, headers) with open('parsed.txt', 'w') as f_obj: for name, href in links.items(): f_obj.write(name + ':\n' + href + '\n\n')
Хороший результат! Если не считать пропусков строк и комментариев, то мы уложились ровно в 20 строк. Для начала довольно-таки хорошо 🙂
Как и обещал, ссылки на документации использованных библиотек:
Requests: *жмяк*
bs4: *жмяк*
fake_useragent: *жмяк*
Всем спасибо за внимание! До встреч!
P.S. Если будет какой-либо фидбек, то следующая статейка не заставит себя ждать
ссылка на оригинал статьи https://habr.com/ru/post/482340/
Добавить комментарий