Добавлена документация для gpsa
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Библиотека для работы с файлами во время парсинга
|
||||
|
||||
Во время парсинга часто приходится скачивать html-страницы, работать с json- и csv-файлами. Эта библиотека призвана облегчить написание кода для такого рода задач. Библиотека создавалась для удобства работы во время парсинга, но ничто не мешает использовать её просто для работы с json и csv.
|
||||
Во время парсинга часто приходится скачивать html-страницы, работать с json- и csv-файлами. Эта библиотека призвана облегчить написание кода для такого рода задач. Библиотека создавалась для удобства работы во время парсинга, но ничто не мешает использовать её просто для работы с json, csv и прогресс-барами.
|
||||
|
||||
В библиотеке есть три класса для отдельных работ: Pars для работы с запросами и bs4, JsonManager для работы с json и CsvManager для работы с csv. Так же есть один класс для улучшения пользовательского опыта — ProgressBarManager, который создаёт прогресс-бар
|
||||
|
||||
@@ -26,55 +26,55 @@ p = Pars()
|
||||
|
||||
2. Метод **getDynamicPage** с помощью библиотеки Selenium получает динамически обновляемую страницу. Это помогает, когда контент на странице подгружается динамически. Принимает url страницы, путь сохранения, closeWindow и timeSleep. По умолчанию браузер Selenium открывается в фоновом режиме, и работу браузера не видно, но если closeWindow указать как False, то будет виден процесс выполнения кода. С помощью timeSleep можно увеличить время загрузки страницы если контент на ней долго подгружается
|
||||
|
||||
3. Метод **returnBs4Object** возвращает объект beautifulsoup4. Принимает путь до html-страницы, содержимое которой преобразует в объект beautifulsoup, кодировку открытия файла (по умолчанию UTF-8) и тип парсера (по умолчанию lxml).
|
||||
3. Метод **gpsa** (get page semi-automatically) похож на метод getDynamicPage, но работает в полуавтоматическом режиме. Он открывает страницу сайта и ждёт пока не будет нажат Enter в терминале. В этот момент можно зарегистрироваться на сайте и/или перейти на нужную вкладку сайта, после чего нажать Enter и метод спарсит страницу. Подходит для лент соцсетей, где неавторизованным пользователям контент ограничен. Принисает такие же аргументы для таких же целей, что и getDynamicPage, за исключением closeWindow
|
||||
|
||||
4. Метод **getAttributes** нужена чтобы получить список атрибутов из списка объектов bs4. Принимает список объектов bs4 и название атрибута который будет извлекаться из элементов списка
|
||||
4. Метод **returnBs4Object** возвращает объект beautifulsoup4. Принимает путь до html-страницы, содержимое которой преобразует в объект beautifulsoup, кодировку открытия файла (по умолчанию UTF-8) и тип парсера (по умолчанию lxml).
|
||||
|
||||
5. Метод **getTexts** нужена чтобы получить список текста из списка объектов bs4. Принимает список объектов bs4 и параметр needFix. Если этот параметр установлен как True, то из текста будут удалены \n, \t и пробелы с концов
|
||||
5. Метод **getAttributes** нужена чтобы получить список атрибутов из списка объектов bs4. Принимает список объектов bs4 и название атрибута который будет извлекаться из элементов списка
|
||||
|
||||
6. Метод **pprint** используется для вывода значений переменных у которых большая вложеность. Например, если у Вас есть массив объектов, где в качестве значения ключа используется другой массив объектов
|
||||
6. Метод **getTexts** нужена чтобы получить список текста из списка объектов bs4. Принимает список объектов bs4 и параметр needFix. Если этот параметр установлен как True, то из текста будут удалены \n, \t и пробелы с концов
|
||||
|
||||
7. Метод **mkdir** используется для создания папки с именем _nameDir_ если она ещё не существует
|
||||
7. Метод **pprint** используется для вывода значений переменных у которых большая вложеность. Например, если у Вас есть массив объектов, где в качестве значения ключа используется другой массив объектов
|
||||
|
||||
Пример скачивания html-страницы:
|
||||
8. Метод **mkdir** используется для создания папки с именем _nameDir_ если она ещё не существует
|
||||
|
||||
Пример парсера с использованием ipars:
|
||||
|
||||
```py
|
||||
from ipars import Pars
|
||||
# О классе ProgressBarManager читай ниже
|
||||
from ipars import Pars, ProgressBarManager
|
||||
p = Pars()
|
||||
nameFile = 'index.html'
|
||||
|
||||
# Заголовки для запроса
|
||||
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)
|
||||
# Получаем html страницу
|
||||
p.getDinamicPage(nameFile, 'https://duckduckgo.com/?q=теплица+социальных+технологий+youtube&iar=videos&atb=v454-1', closeWindow=0)
|
||||
|
||||
# Получаем объект beautifulsoup из полученной страницы
|
||||
soup = p.returnBs4Object('./index.html')
|
||||
# Получаем объект BautifullSoup
|
||||
soup = p.returnBs4Object(nameFile)
|
||||
|
||||
# Используем методы beautifulsoup
|
||||
allImage = soup.find_all('img')
|
||||
print('-----начало-----')
|
||||
for image in allImage:
|
||||
p.pprint(image.get('src'))
|
||||
print('-----конец------')
|
||||
# Находим все карточки ответов
|
||||
# Первые результаты выдачи те что хотелось получить, а остальные нет. Поэтому нам желательно получить первые 84 элемента
|
||||
allCards = soup.find_all(class_='b_NgmZrVnRtV8MZMEjLs')[:84]
|
||||
|
||||
```
|
||||
# Получаем все изображения
|
||||
allImg = [card.find('img') for card in allCards]
|
||||
|
||||
Пример скачивания фотографии:
|
||||
# Получаем все ссылки
|
||||
allSrc = p.getAttributes(allImg, 'src')
|
||||
|
||||
```py
|
||||
from ipars import Pars
|
||||
p = Pars()
|
||||
# Создаём папку img если её ещё нет
|
||||
nameFolder = 'img'
|
||||
p.mkdir(nameFolder)
|
||||
|
||||
p.mkdir('img')
|
||||
# Получаем картинку
|
||||
p.getStaticPage(
|
||||
pathToSaveFile="./img/logo.png",
|
||||
# Возможно в будущем, эта картинка переместится в другое место и пример перестанет работать 👉👈
|
||||
url="https://cdn.sstatic.net/Sites/stackoverflow/Img/icon-48.png?v=b7e36f88ff92",
|
||||
writeMethod='wb'
|
||||
)
|
||||
# Создаём объект ProgressBarManager
|
||||
bar = ProgressBarManager(len(allSrc))
|
||||
|
||||
# Скачиваем картинки
|
||||
for index, url in enumerate(allSrc):
|
||||
url = 'https:' + url
|
||||
p.getStaticPage(f'./{nameFolder}/img{index}.png', url, writeMethod='wb')
|
||||
bar.next()
|
||||
bar.finish()
|
||||
```
|
||||
|
||||
Пример использование методов _getAttributes_ и _getTexts_
|
||||
|
||||
Reference in New Issue
Block a user