Création d'un crawler pour concours et activités externes sur Campuspick avec Python - Projet de crawling automatique pour concours et activités externes : Partie 1

Premier article du projet de création d'un crawler pour concours et activités externes de CampusPick en utilisant Python. Explication détaillée de la méthode de crawling des données avec les bibliothèques Selenium et Openpyxl.

12
Création d'un crawler pour concours et activités externes sur Campuspick avec Python - Projet de crawling automatique pour concours et activités externes : Partie 1

0. Introduction

Je m'attends à ce que de nombreux chercheurs d'emploi et étudiants universitaires lisent les notes de développement de Hashscraper pour rechercher des concours, des activités externes, etc. Afin de transmettre des techniques de crawling plus pratiques, je vais créer un crawler pour le site de concours/activités externes CampusPick (https://www.campuspick.com/) en utilisant Python. Le projet sera divisé en 3 séries.

  1. Création du crawler CampusPick

  2. Configuration de la fréquence d'exécution du crawler à l'aide de Crontab et exécution

  3. Envoi des données crawlées par email en utilisant Python et Gmail

Ce post concerne la première partie, Création du crawler CampusPick.

  • Ce post ne fournit pas de guide d'installation de base pour Python.

1. Installation d'Openpyxl

1.1. Installation de la bibliothèque

Tout d'abord, vous devez installer les bibliothèques utilisées pour le crawling en Python, Selenium et Openpyxl pour manipuler Excel. Veuillez installer les bibliothèques en utilisant le code ci-dessous dans votre terminal.

(Si pip n'est pas applicable, vous pouvez utiliser le code avec pip3 ci-dessous)

# selenium 설치
pip install selenium
# or
pip3 install selenium

# openpyxl 설치
pip install openpyxl
# or
pip3 install openpyxl

1.2. Importation des bibliothèques

Ensuite, vous devez importer les bibliothèques Selenium et time.

# 크롤러 라이브러리
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# 엑셀 라이브러리
import openpyxl
# 시간 라이브러리
import time

2. Développement du crawler

2.1. Construction de la liste

Créez une liste pour rassembler les données crawlées et ajoutez les URL des pages que vous souhaitez crawler pour créer une liste d'URL.

# 크롤링한 데이터를 모아두는 리스트
earned_content = []

# 캠퍼스픽 공모전 페이지와 대외활동 페이지 URL
contest_url = "<https://www.campuspick.com/contest>"
activity_url = "<https://www.campuspick.com/activity>"
url_list = [contest_url, activity_url]

2.2. Configuration pour ouvrir automatiquement une fenêtre de navigateur vide

En utilisant le code ci-dessous, vous pouvez ouvrir une fenêtre de navigateur vide.

# 크롬창을 띄우는 코드
driver = webdriver.Chrome()
for url in url_list:
    # url 접속
    driver.get(url)
    # 로딩이 다 되기 위해서 3초 기다려주기
    time.sleep(3)

    # 웹페이지 자체가무한스크롤이므로 리스트에서 첫번째 것만 가져와서,
    # following-sibling 을 이용해서 다음 리스트 가져옴
    lis = driver.find_elements(By.XPATH, '//*[@class="list"]/*[@class="item"]')
    li = lis[0] if lis else None

    while li:
        if li.find_elements(By.XPATH, './/*[@class="dday highlight"]'):
            # 마감기한을 가져와서 마감된 게시물인지 확인
            due_date = li.find_element(By.XPATH, './/*[@class="dday highlight"]').text
            if "마감" in due_date:
                print("마감된 게시물은 가져오지 않습니다")
        else:
            print("마감기한이 없습니다")
            break  # 시간순서로 가져오기 때문에 마감이면 이후에 게시물도 마감이므로 반복문 종료

        # 다음 리스트 아이템으로 스크롤하는 코드
        driver.execute_script("arguments[0].scrollIntoView({behavior: 'smooth', block: 'center'});", li)

        # 키워드
        keywords = li.find_elements(By.XPATH, './/*[@class="badges"]/span')
        keyword_list = [keyword.text for keyword in keywords]
        keyword_str = ",".join(keyword_list)

        # 활동명
        title = li.find_element(By.XPATH, './/h2').text
        # 주최
        company = li.find_element(By.XPATH, './/*[@class="company"]').text
        # 조회수
        view_count = li.find_element(By.XPATH, './/*[@class="viewcount"]').text
        # 썸네일 이미지 URL
        thumbnail_url = li.find_element(By.XPATH, './/figure').get_attribute("data-image")

        results = [keyword_str, title, company, due_date, view_count, thumbnail_url]

        print(results)

        earned_content.append(results)

        # 다음 리스트 있는지 확인해서 리스트 가져오기
        if li.find_elements(By.XPATH, './following-sibling::*[@class="item"]'):
            print("다음 리스트가 존재합니다")
            next_li = li.find_element(By.XPATH, './following-sibling::*[@class="item"]')
            if next_li.find_element(By.XPATH, './/*[@class="dday highlight"]'):
                due_date = next_li.find_element(By.XPATH, './/*[@class="dday highlight"]').text
                print(f"마감기한: {due_date}")
                if "마감" in due_date:
                    print("마감된 게시물은 가져오지 않습니다")
                print("다음게시물을 가져옵니다")
                li = next_li
            else:
                print("마감기한이 없습니다")
                break  # 시간순서로 가져오기 때문에 마감이면 이후에 게시물도 마감이므로 반복문 종료
        else:
            print("다음 리스트가 존재하지 않습니다. 종료합니다.")
            break
# 크롬 드라이버 종료
driver.quit()

En exécutant ce code, les données crawlées seront stockées dans earned_content.

2.3. Conversion des données en fichier Excel

Pour créer un fichier Excel à partir des données stockées, écrivez le code ci-dessous.

# 엑셀 워크북 생성
wb = openpyxl.Workbook()

# 엑셀 시트 생성
ws = wb.active
ws.title = "캠퍼스픽 대외활동_공모전 정보"

# 컬럼 제목 추가
column_titles = ["키워드", "활동명", "주최", "마감일", "조회수", "썸네일이미지 URL"]
ws.append(column_titles)

# 데이터를 한줄씩 시트에 쓰기
for row_data in earned_content:
    ws.append(row_data)

# 엑셀 파일 저장
wb.save("campuspick_info_data.xlsx")

Le code ci-dessus convertit les données récupérées en Excel.

3. Conclusion

Aujourd'hui, nous avons réussi à extraire les concours/activités externes proposés sur le site CampusPick et à les enregistrer dans un fichier Excel.

En choisissant CampusPick comme canal, il serait très utile pour les professionnels et les entrepreneurs de configurer d'autres canaux tels que des plateformes d'actualités ou des pages de projets gouvernementaux de la même manière.

Dans le prochain post, nous verrons comment automatiser la collecte quotidienne en utilisant Crontab basé sur le crawler que nous avons créé aujourd'hui.

Consultez également cet article :

Collecte de données, automatisez maintenant

Commencez en 5 minutes sans coder · Expérience du crawling de plus de 5 000 sites web

Commencez gratuitement →

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

Continuer la lecture

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.