본문 바로가기
Programming/Python

[python]로그인이 필요한 웹사이트 크롤링

by Ton-Ton 2023. 2. 22.

python
python

로그인이 필요한 웹사이트를 크롤링하려면 일반적으로 Selenium과 같은 웹 크롤링 도구를 사용해야합니다. Selenium을 사용하면 웹 브라우저를 자동화하여 로그인하고, 데이터를 수집할 수 있습니다.

Selenium을 사용하는 방법은 다음과 같습니다.

 

1. Selenium WebDriver를 다운로드하고, 웹 드라이버를 설정합니다. 예를 들어, Chrome 웹 드라이버를 사용하는 경우 다음과 같은 코드를 사용할 수 있습니다.

 
from selenium import webdriver

driver = webdriver.Chrome('/path/to/chromedriver')

 

2. Selenium WebDriver를 사용하여 로그인 페이지로 이동합니다.

 
driver.get('https://example.com/login')

 

3. 로그인 정보를 입력하고 로그인 버튼을 클릭합니다.

 
username_input = driver.find_element_by_name('username')
password_input = driver.find_element_by_name('password')
submit_button = driver.find_element_by_name('submit')

username_input.send_keys('your_username')
password_input.send_keys('your_password')
submit_button.click()

 

4. 로그인이 완료되면 데이터를 수집할 페이지로 이동하고, 필요한 데이터를 수집합니다.

 
driver.get('https://example.com/data')

data = []
rows = driver.find_elements_by_xpath('//table/tr')
for row in rows:
    cells = row.find_elements_by_xpath('td')
    data.append([cell.text for cell in cells])

 

5. 데이터를 Google Sheets에 저장합니다. Google Sheets API를 사용하여 데이터를 저장할 수 있습니다. 위에서 설명한 방법과 유사한 방법으로 Google Sheets API를 사용할 수 있습니다.

 
from google.oauth2 import service_account
from googleapiclient.discovery import build

# 인증 토큰을 가져옵니다.
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
SERVICE_ACCOUNT_FILE = 'path/to/service_account.json'
creds = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE, scopes=SCOPES)

# Google Sheets API를 사용하여 데이터를 저장합니다.
service = build('sheets', 'v4', credentials=creds)
sheet = service.spreadsheets()
sheet_id = 'your-spreadsheet-id'
range_name = 'Sheet1!A1:B2'
values = data
result = sheet.values().update(
        spreadsheetId=sheet_id, range=range_name,
        valueInputOption='USER_ENTERED', body={'values': values}).execute()
print(f"{result.get('updatedCells')} cells updated.")

위 코드에서 your_username, your_password, your-spreadsheet-id를 각각 본인의 로그인 정보와 Google Sheets 파일 ID로 바꾸고, Sheet1!A1:B2를 데이터를 저장할 범위로 바꾸면 됩니다.

반응형

댓글