CoderCastrov logo
CoderCastrov
Парсер

Как ежедневно собирать данные с сайта в облаке с помощью Selenium от А до Я? (Часть 3/4)

Как ежедневно собирать данные с сайта в облаке с помощью Selenium от А до Я? (Часть 3/4)
просмотров
4 мин чтение
#Парсер

Предыдущая часть: https://medium.com/@hureauxarnaud/comment-scraper-un-site-quotidiennement-en-cloud-avec-selenium-from-a-to-z-partie-2-4-19104a48538

3.1) Бонус 1: экспорт в Google Drive:

Создайте Google Sheet в своем диске.

Добавьте 8 названий столбцов в свой набор данных (если вы изменили функцию Python и экспортируете фрейм данных с X столбцами, добавьте не 8, а X названий столбцов).

Перейдите на https://console.cloud.google.com

Перейдите в "API Overview", как показано на изображении ниже:

Затем перейдите в "Library":

Затем выберите API Google Drive и активируйте его:

Теперь нажмите "Создать учетные данные" (кнопка должна появиться сразу после активации API Google Drive):

Настройте свои "credentials" следующим образом:

Это загрузит файл .json.

После загрузки вы можете активировать API Google Sheet (точно так же, как и для API Google Drive).

Теперь откройте загруженный файл .json с помощью блокнота (текстового редактора) и скопируйте странное электронное письмо, которое появляется на строке "client_email", без кавычек, как показано на изображении ниже:

Перейдите на Google Sheet, в которую вы хотите отправить свои данные, затем перейдите в "Поделиться":

Добавьте странное электронное письмо из .json в список людей, с которыми вы делитесь файлом (давая полные права).

Загрузите файл getPinnacle_bonus1.py с GitHub (не загружайте его напрямую с помощью wget, так как вам нужно будет его изменить!) :

ArnaudHureaux/scraping-with-google-cloud

Внести вклад в развитие ArnaudHureaux/scraping-with-google-cloud, создав учетную запись на GitHub.

github.com

Это тот же файл, что и getPinnacle.py, за исключением того, что эти строки кода добавлены в конец файла, я выделил элементы, которые нужно изменить жирным шрифтом:

|import gspread
import pandas as pd
from oauth2client.service_account import ServiceAccountCredentialsdef updateGSwithDF(df,nameSheet):    scope=['https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive.file',
    'https://www.googleapis.com/auth/drive']creds=ServiceAccountCredentials.from_json_keyfile_name('**YourProject.json**',scope)    client=gspread.authorize(creds)    sh=client.open_by_url('**https://docs.google.com/spreadsheets/d/1Hz_DysSzKu_5f7Z7PngBtpK14Cpwm0cIq8w_O53bIkY/edit#gid=0**')    sh=sh.worksheet(nameSheet)
    a=sh.get_all_values()    alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    target='A'+str(len(a)+1)+':'+alphabet[len(a[0])-1]+str(len(a)+1+len(df)-1)
    sh.update(target,df.values.tolist())
    pi=getPinnacleDF()
    pi.to_csv('pi.csv',index=False,header=True)    pi = pi.applymap(str)
    updateGSwithDF(pi,'**Feuille 1**')

Чтобы это работало с вами, вам нужно изменить три вещи в файле Python "getPinnacleBonus1":

  1. Вам нужно заменить имя .json "MyProject.json" на то, которое вы загрузили.

  2. Вам нужно заменить имя вкладки, здесь "Feuille 1", на имя вашей вкладки. По умолчанию это "Sheet 1" на английском и "Feuille 1" на французском.

После внесения изменений вы можете импортировать getPinnacle_bonus1.py на сервер GCloud вместе с загруженным .json! (см. следующий скриншот)

In english : “Import a file”

Теперь установите необходимые библиотеки с помощью следующих команд:

|pip3 install gspread
pip3 install oauth2client

Готово, вы можете выполнить свой скрипт getPinnacle_bonus1.py с помощью команды:

|python3 getPinnacle_bonus1.py

Теперь посмотрите на свою таблицу Google, если файл был обновлен, значит все работает! Поздравляю!

getPinnacle_bonus1.py будет делать то же самое, что и getPinnacle.py, и отправит вам фрейм данных в вашу таблицу Google Sheet ;)

Имейте в виду, что функция updateGSwithDF работает независимо от количества столбцов в вашем фрейме данных, вам просто нужно указать количество имен столбцов, соответствующее количеству столбцов в вашем фрейме данных.

Не забудьте добавить строку "00 08 ***** ***** ***** python3 getPinnacle.py" в свой файл crontab, если вы хотите, чтобы парсинг запускался регулярно (обратите внимание, что экспорт не удалит предыдущие экспорты, а просто добавит новые).

Теперь вы можете либо перейти к следующей части, чтобы быть автоматически уведомленным по электронной почте при каждом экспорте (это удобно, чтобы убедиться, что нет ошибок), либо перейти непосредственно к части 4/4, где будет объяснен весь код.

3.2) Бонус 2: получение уведомления по электронной почте при каждом экспорте

Загрузите файл getPinnacle_bonus2.py с GitHub:

https://github.com/ArnaudHureaux/scraping-with-google-cloud

Это тот же файл, что и getPinnacle_bonus2.py, за исключением того, что эти строки кода добавлены в конец файла:

|def SendEmail():
     user = 'yourmail@gmail.com'
     app_password = 'your_app_password'
     to = 'yourmail@gmail.com'
     subject = 'Scraping : Pinnacle'
     content = ['The site has been scrape sucessfully !']
     with yagmail.SMTP(user, app_password) as yag:
     yag.send(to, subject, content)
     print('Sent email successfully.')

Чтобы это работало, вам нужно ввести свой адрес электронной почты и сгенерированный вами app_password, следуя инструкциям в этом кратком и хорошо объясненном учебнике:

https://towardsdatascience.com/automate-sending-emails-with-gmail-in-python-449cc0c3c317

Спасибо, что следовали этому учебнику, вы можете перейти к последней части этого учебника, чтобы получить объяснение кода, ссылка на часть 4/4: https://medium.com/@hureauxarnaud/comment-scraper-un-site-quotidiennement-en-cloud-avec-selenium-from-a-to-z-partie-4-4-38c02f4dc040

Не стесняйтесь связаться со мной в LinkedIn, чтобы задать вопросы / познакомиться: www.linkedin.com/in/arnaud-hureaux-895421159

Спасибо!