Skip to main content

Библиотека для работы с файлами во время парсинга

Project description

Библиотека для работы с файлами во время парсинга

Во время парсинга часто приходится скачивать html-страницы, работать с json- и csv-файлами. Эта библиотека призвана облегчить написание кода для такого рода задач. Библиотека создавалась для удобства работы во время парсинга, но ничто не мешает использовать её просто для работы с json и csv.

В библиотеке есть три класса для отдельных работ: Pars для работы с запросами и bs4, JsonManager для работы с json и CsvManager для работы с csv.

Установить библиотеку:

pip install ipars

Работа с Pars

Класс Pars не принимает никаких данных для конструкторов.

from ipars import Pars

p = Pars()

Коротко о методах:

  1. Метод getStaticPage принимает url страницы, путь, по которому сохранится страница, метод записи и заголовки запроса. Метод записи «wb» используется для сохранения картинок, по умолчанию writeMethod установлен как «w», что используется для html-страниц. Если заголовки запросов не указаны, то будут использоваться встроенные, но при желании можно указать свои. Метод возвращает статус ответа сайта, что должно использоваться для введения проверок

  2. Метод getDynamicPage с помощью библиотеки Selenium получает динамически обновляемую страницу. Это помогает, когда контент на странице подгружается динамически. Принимает url страницы, путь сохранения, closeWindow и timeSleep. По умолчанию браузер Selenium открывается в фоновом режиме, и работу браузера не видно, но если closeWindow указать как False, то будет виден процесс выполнения кода. С помощью timeSleep можно увеличить время загрузки страницы если контент на ней долго подгружается

  3. Метод returnBs4Object возвращает объект beautifulsoup4. Принимает путь до html-страницы, содержимое которой преобразует в объект beautifulsoup, кодировку открытия файла (по умолчанию UTF-8) и тип парсера (по умолчанию lxml).

  4. Метод getAttributes нужена чтобы получить список атрибутов из списка объектов bs4. Принимает список объектов bs4 и название атрибута который будет извлекаться из элементов списка

  5. Метод getTexts нужена чтобы получить список текста из списка объектов bs4. Принимает список объектов bs4 и параметр needFix. Если этот параметр установлен как True, то из текста будут удалены \n, \t и пробелы с концов

  6. Метод pprint используется для вывода значений переменных у которых большая вложеность. Например, если у Вас есть массив объектов, где в качестве значения ключа используется другой массив объектов

  7. Метод mkdir используется для создания папки с именем nameDir если она ещё не существует

Пример скачивания html-страницы:

from ipars import Pars
p = Pars()

# Заголовки для запроса
headers = {
    "Accept": "*/*",
    "User-Agent": "Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1"
}
p.getStaticPage('./index.html', 'https://google.com', headers=headers)

# Получаем объект beautifulsoup из полученной страницы
soup = p.returnBs4Object('./index.html')

# Используем методы beautifulsoup
allImage = soup.find_all('img')
print('-----начало-----')
for image in allImage:
    p.pprint(image.get('src'))
print('-----конец------')

Пример скачивания фотографии:

from ipars import Pars
p = Pars()

p.mkdir('img')
# Получаем картинку
p.getStaticPage(
    pathToSaveFile="./img/logo.png",
    # Возможно в будущем, эта картинка переместится в другое место и пример перестанет работать 👉👈
    url="https://cdn.sstatic.net/Sites/stackoverflow/Img/icon-48.png?v=b7e36f88ff92",
    writeMethod='wb'
)

Пример использование методов getAttributes и getTexts

from ipars import Pars
p = Pars()

p.getStaticPage('./index.html', 'https://google.com')
soup = p.returnBs4Object('./index.html')

allTegA = soup.find_all('a')
a1 = p.getTexts(allTegA, needFix=1)
p.pprint(a1)

a2 = p.getAttributes(allTegA, 'href')
p.pprint(a2)

Работа с JsonManager

JsonManager принимает принимает только один аргумент — кодировку в которой будут читаться файлы. По умолчанию это UTF-8

from ipars import JsonManager

j = JsonManager()

Коротко о методах

  1. Метод load используется для получения данных из json-файла по указанному пути

  2. Метод dump используется для записи данных в json-файл. Принимает путь до файла и данные для записи

  3. Метод pprint такой же как и у Pars

from ipars import JsonManager
j = JsonManager()

# Записываем данные
j.dump('./data.json', [1, 2, 3, 4, 5, 6, 7])

# Получаем данные
data = j.load('./data.json')
j.pprint(data) # [1, 2, 3, 4, 5, 6, 7]

Работа с CsvManager

Класс CsvManager принимает три аргумента: символ переноса на новую строку newline (по умолчанию — это пустая строка), кодировку открываемых файлов encoding (по умолчанию UTF-8) и разделитель который используется в csv файле delimiter (по умолчанию ";")

from ipars import CsvManager

c = CsvManager()

Коротко о методах

  1. Метод writerow записывает строку с csv файл. Метод принимает путь до csv файла, метод записи и список данных которые будут записанн в строку файла

  2. Метод writerows принимает теже самые аргументы что и writerow, только row должен быть двойным списком с данными для записи. Разница между этими методами в том что writerow записывает одну, а writerows столько сколько есть в двойном списке

  3. Метод getRows используется для получения списка строк в csv файле. Метод принимает путь до файла откуда будут получены строки

  4. Метод pprint такой же как и у Pars

from ipars import CsvManager
c = CsvManager()

# записываем заголовки
writer = c.writerow('./data.csv', 'w', ['Количество', 'Цена', 'Итог'])

# записываем данные
writer = c.writerows('./data.csv', 'a', [
    ["5", "5", "25"],
    ["6", "6", "36"],
    ["7", "7", "49"],
])

# получаем строки из таблицы
rows = c.getRows('./data.csv')

# выводим строки таблицы
c.pprint(rows)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ipars-3.3.1.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ipars-3.3.1-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file ipars-3.3.1.tar.gz.

File metadata

  • Download URL: ipars-3.3.1.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for ipars-3.3.1.tar.gz
Algorithm Hash digest
SHA256 c0f610b9cfb87544cc225fcfda2f1fda1157060f5646198e76fa38949bfc47af
MD5 594976619e258259336448331405c8ef
BLAKE2b-256 7b55cbdf6a5f476432f851d086f016c963dd4165e7a47a3b978a1fb88dd03c33

See more details on using hashes here.

File details

Details for the file ipars-3.3.1-py3-none-any.whl.

File metadata

  • Download URL: ipars-3.3.1-py3-none-any.whl
  • Upload date:
  • Size: 9.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for ipars-3.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 76b7c937ec7599da66c13d35eaff131b22b693be1e5756beaba4502908ca1b33
MD5 f7314d7d14c9ad32d59719882997fc82
BLAKE2b-256 bafc1aa5bbceac90c40dabcf12871b43bba1a00722e7a82adfaa4633b52d7de3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page