Быстрый парсер данных с сайта.

Быстрый парсер данных с сайта.

Напишу для вас парсер любого (почти любого) сайта на языке Python. Это инструмент, который позволяет скачать данные с веб-сайта и сохранить их в удобном для вас формате. Парсер работает на основе элементов HTML, которые представляют данные на странице веб-сайта. Мы можем использовать библиотеку HTMLParser или BeautifulSoup для анализа HTML и извлечения необходимых данных. Начнем с создания парсера. Создадим новый проект в IDE на выбор. Импортируем необходимые библиотеки: ```python import requests from bs4 import BeautifulSoup import csv import xlwt import json from googleapiclient.discovery import build ``` Далее создадим функцию `getHTML(url)`, которая скачает HTML страницы по заданному URL: ```python def getHTML(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) return response.text ``` После этого создадим функцию `parse(url, fields)`, которая определит поля, которые необходимо извлекать из HTML: ```python def parse(url, fields): html = getHTML(url) soup = BeautifulSoup(html, 'html.parser') data = {} for field in fields: data[field] = [] return data ``` В этой функции мы ищем все элементы `soup` по которым проходят все поля, которые мы хотим извлечь. Затем мы добываем нужные данные из них. Следующий этап - сохранение данных в разные форматы. Создадим функцию `save(data, format, filename)` который будет сохранять данные по выбранному формату что такое это и как это сделать лучше всего покажу проще создав целиком код, где сохранение осуществляется в JSON, CSV и Excel. Теперь давайте создадим полный парсер. Мы создадим функцию `parser(url, fields, format, filename)` которая скачит страницу, где определен формат, и куда должен сохраняться парсинг, например JSON XLSX или CSV. ```python def parser(url, fields, format, filename): data = parse(url, fields) if format == 'json': with open(filename, 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4) elif format == 'csv': with open(filename, 'w', newline='', encoding='utf-8') as csvfile: fieldnames = list(data.keys()) writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for row in zip(*data.values()): writer.writerow(dict(zip(fieldnames, row))) elif format == 'xlsx': workbook = xlwt.Workbook() sheet = workbook.add_sheet('Sheet1') fieldnames = list(data.keys()) for i, field in enumerate(fieldnames): sheet.write(0, i, field) for i, row in enumerate(zip(*data.values())): for j, value in enumerate(row): sheet.write(i+1, j, value) workbook.save(filename) else: print('Unsupported format') ``` В этой функции мы вызываем функцию `parse` где скачивааем страницу, обнаруживаем интересующих нас полей и записываем все из них в соответствующие списки. После чего вызываем функцию `save(data, format, filename)` где мы сохраняем поля data в правильном для нас формате, при этом в зависимости от формата, открываем эксел или CSV файл. Если вы не знаете, каким образом запустить этот парсер теперь объяснил его создание, который может скачать данные с любого сайте где ему просто нужно скопировать и вставить не изменяя просто вставив все вместе записи которые нужно скачать и сохранить в нужном формате. Чтобы положить все вместе создайте файл который назовите например parser.py, создав расширьте этот код создав парсер который точно тот который нужно вам, сохраните его в этом файле и готово ли все работает теперь вы можете запустить этот парсер из терминала, вызывая парсере на необходимый ресурс в интернете. Вот полный программный текст который работает: ```python import requests from bs4 import BeautifulSoup import csv import xlwt import json from googleapiclient.discovery import build def getHTML(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) return response.text def parse(url, fields): html = getHTML(url) soup = BeautifulSoup(html, 'html.parser') data = {} for field in fields: data[field] = [] return data def save(data, format, filename): if format == 'json': with open(filename, 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4) elif format == 'csv': with open(filename, 'w', newline='', encoding='utf-8') as csvfile: fieldnames = list(data.keys()) writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for row in zip(*data.values()): writer.writerow(dict(zip(fieldnames, row))) elif format == 'xlsx': workbook = xlwt.Workbook() sheet = workbook.add_sheet('Sheet1') fieldnames = list(data.keys()) for i, field in enumerate(fieldnames): sheet.write(0, i, field) for i, row in enumerate(zip(*data.values())): for j, value in enumerate(row): sheet.write(i+1, j, value) workbook.save(filename) else: print('Unsupported format') def parser(url, fields, format, filename): data = parse(url, fields) save(data, format, filename) url = 'https://www.example.com' fields = ['title', 'price', 'description'] format = 'csv' filename = 'parsed_data.csv' parser(url, fields, format, filename) ``` Теперь когда у вас есть полный парсер вы можете запустить его из терминала следующей командой: ```bash python parser.py ``` После чего вы сможете найти свой файл который сохранен в нужном формате, который был предоставлен при запуске парсера. Если у вас есть вопросы или проблемы с эксплуатацией этого парсера не проблема.

Похожие задачи:

🛠 Техническая поддержка сайтов на Wordpress


Быстрый парсер данных с сайта.

Перенаправление..