Erstellen Sie einen Wettbewerbs- und Außenaktivitäten-Crawler für CampusPick mit Python - Wettbewerbs- und Außenaktivitäten-Automatisierungsprojekt: Teil 1

Erster Beitrag des Projekts zur Erstellung eines Crawlers für Campuspick-Wettbewerbe und externe Aktivitäten mit Python. Detaillierte Erklärung zur Daten-Crawling mit Selenium und Openpyxl-Bibliothek.

10
Erstellen Sie einen Wettbewerbs- und Außenaktivitäten-Crawler für CampusPick mit Python - Wettbewerbs- und Außenaktivitäten-Automatisierungsprojekt: Teil 1

0. Überblick

Da davon ausgegangen wird, dass viele Personen, die die Hashscraper-Entwicklungsnotizen lesen, Studierende auf Stellensuche oder Studierende sind, die sich für Wettbewerbe oder externe Aktivitäten interessieren, werde ich Ihnen eine praktischere Crawling-Technologie mit Python vorstellen, indem ich einen Crawler für den Wettbewerbs-/externen Aktivitäten-Website Campuspick erstelle (https://www.campuspick.com/). Das Projekt wird in drei Serien aufgeteilt.

  1. Erstellung des Campuspick-Crawlers

  2. Einrichten und Ausführen des Crawlers mit Crontab

  3. Crawling-Daten mit Python und Gmail per E-Mail senden

Dieser Beitrag bezieht sich auf die Erstellung des Campuspick-Crawlers.

  • Dieser Beitrag enthält keine Anleitungen zur grundlegenden Installation von Python.

1. Openpyxl installieren

1.1. Bibliothek installieren

Zuerst müssen Sie die Bibliotheken Selenium und Openpyxl installieren, die für das Crawlen mit Python verwendet werden. Bitte installieren Sie die Bibliotheken mit dem folgenden Code im Terminal.

(Falls pip nicht funktioniert, können Sie den folgenden Code mit pip3 verwenden)

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

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

1.2. Bibliotheken importieren

Danach ist es erforderlich, die Bibliotheken Selenium und time zu importieren.

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

2. Entwicklung des Crawlers

2.1. Listen erstellen

Erstellen Sie eine Liste, um die gecrawlten Daten zu sammeln, und fügen Sie die URLs der Seiten hinzu, die Sie crawlen möchten, um eine Liste von URLs zu erstellen.

# 크롤링한 데이터를 모아두는 리스트
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. Einstellen des automatischen Öffnens eines leeren Browserfensters

Mit dem folgenden Code können Sie ein leeres Browserfenster öffnen.

# 크롬창을 띄우는 코드
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()

Wenn Sie den obigen Code ausführen, werden die gecrawlten Daten in earned_content gespeichert.

2.3. Konvertierung der gespeicherten Daten in Excel

Um die gespeicherten Daten in eine Excel-Datei zu konvertieren, schreiben Sie den folgenden Code.

# 엑셀 워크북 생성
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")

Der obige Code ist die Aufgabe, die Daten, die über die Bibliothek erhalten wurden, in Excel umzuwandeln.

3. Fazit

Heute haben wir die Wettbewerbe/externen Aktivitäten, die auf der Campuspick-Website ausgeschrieben sind, gecrawlt und in Excel gespeichert.

Indem Sie den Kanal auf Campuspick festlegen, können Sie auch anderen Kanälen wie Nachrichtenplattformen oder staatlich unterstützten Projektseiten auf dieselbe Weise einrichten, was für Fachleute und Unternehmer sehr hilfreich sein könnte.

Im nächsten Beitrag werden wir untersuchen, wie wir den heute erstellten Crawler mithilfe von Crontab so einrichten können, dass er täglich automatisch Daten sammelt.

Lesen Sie auch diesen Artikel:

Datenerfassung, jetzt automatisieren

Beginnen Sie in 5 Minuten ohne zu coden · Erfahrung im Crawlen von über 5.000 Websites

Jetzt kostenlos starten →

Comments

Add Comment

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

Weiterlesen

Get notified of new posts

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

Your email will only be used for new post notifications.