트위터 팔로우 데이터 스크래핑 방법 배우기 | 전체 코드 제공

파이썬 및 셀레늄으로 트위터 팔로우 데이터 스크래핑하기

스크랩한 데이터 예시

{
  "userId": "95092020",
  "isBlueVerified": true,
  "following": false,
  "canDm": false,
  "canMediaTag": false,
  "createdAt": "Sun Dec 06 23:33:02 +0000 2009",
  "defaultProfile": false,
  "defaultProfileImage": false,
  "description": "Best-Selling Author | Clinical Psychologist | #1 Education Podcast | Enroll to @petersonacademy now:",
  "fastFollowersCount": 0,
  "favouritesCount": 161,
  "followersCount": 5613000,
  "friendCount": 1686,
  "hasCustomTimelines": true,
  "isTranslator": false,
  "listedCount": 14572,
  "location": "",
  "mediaCount": 7318,
  "name": "Dr Jordan B Peterson",
  "normalFollowersCount": 5613000,
  "pinnedTweetIdsStr": [
    "1849105729438790067"
  ],
  "possiblySensitive": false,
  "profileImageUrlHttps": "https://pbs.twimg.com/profile_images/1407056014776614923/TKBC60e1_normal.jpg",
  "profileInterstitialType": "",
  "username": "jordanbpeterson",
  "statusesCount": 51343,
  "translatorType": "none",
  "verified": false,
  "wantRetweets": false,
  "withheldInCountries": []
}

설정 없이 코드 직접 실행하기
우리의 가이드는 트위터 팔로우 데이터를 원활하게 스크래핑하기 위한 완전한 준비된 코드를 제공합니다. 파이썬과 셀레늄을 사용하여 데이터 수집을 자동화하고 성능 로그를 효율적으로 캡처하세요. 추가 설정 없이 트위터 인사이트를 잠금 해제하세요!

1단계: 환경 설정하기

먼저 브라우저 자동화를 위해 셀레늄을 설치하세요:

pip install -r requirements.txt

2단계: ChromeDriver 다운로드

셀레늄이 Chrome 브라우저와 상호작용할 수 있도록 ChromeDriver를 다운로드하세요. 여기에서 받으세요: ChromeDriver 다운로드

3단계: Chrome 옵션 설정하기

self.options = webdriver.ChromeOptions()
user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
self.options.add_argument(f'user-agent={user_agent}')
self.options.add_argument('--disable-gpu')
self.options.add_argument('--no-sandbox')
self.options.add_argument('--disable-dev-shm-usage')
self.options.add_argument(f"--remote-debugging-port={remote_debugging_port}")

js_script_name = modify_random_canvas_js()
self.browser = self.get_browser(script_files=[js_script_name], record_network_log=True, headless=True)

4단계: 대상 페이지에 접근하기

self.browser.switch_to.new_window('tab')
url = 'https://x.com/1_usd_promotion/following'
self.browser.get(url=url)

time.sleep(2)

exist_entry_id = []

self.get_network(exist_entry_id, result_list)

print(f'tweet result length = {len(result_list)}')

5단계: 브라우저 성능 로그 가져오기

performance_log = self.browser.get_log("performance")
for packet in performance_log:

    msg = packet.get("message")
    message = json.loads(packet.get("message")).get("message")
    packet_method = message.get("method")

    if "Network" in packet_method and 'Following' in msg:

        request_id = message.get("params").get("requestId")

        resp = self.browser.execute_cdp_cmd('Network.getResponseBody', {'requestId': request_id})

6단계: 응답에서 데이터 추출하기

body = resp.get("body")
body = json.loads(body)
instructions = body['data']['user']['result']['timeline']['timeline'].get('instructions', None)
if not instructions:
    continue
for instruction in instructions:
    entries = instruction.get('entries', None)

7단계: 응답 데이터 샘플

{
  "userId": "95092020",
  "isBlueVerified": true,
  "following": false,
  "canDm": false,
  "canMediaTag": false,
  "createdAt": "Sun Dec 06 23:33:02 +0000 2009",
  "defaultProfile": false,
  "defaultProfileImage": false,
  "description": "Best-Selling Author | Clinical Psychologist | #1 Education Podcast | Enroll to @petersonacademy now:",
  "fastFollowersCount": 0,
  "favouritesCount": 161,
  "followersCount": 5613000,
  "friendCount": 1686,
  "hasCustomTimelines": true,
  "isTranslator": false,
  "listedCount": 14572,
  "location": "",
  "mediaCount": 7318,
  "name": "Dr Jordan B Peterson",
  "normalFollowersCount": 5613000,
  "pinnedTweetIdsStr": [
    "1849105729438790067"
  ],
  "possiblySensitive": false,
  "profileImageUrlHttps": "https://pbs.twimg.com/profile_images/1407056014776614923/TKBC60e1_normal.jpg",
  "profileInterstitialType": "",
  "username": "jordanbpeterson",
  "statusesCount": 51343,
  "translatorType": "none",
  "verified": false,
  "wantRetweets": false,
  "withheldInCountries": []
}

8단계: 중요한 고려 사항

자주 묻는 질문(FAQ)

  • Q: 웹 스크래핑이란 무엇인가요?

    웹 스크래핑은 웹사이트에서 정보를 자동으로 수집하는 특수 도구를 사용하는 것입니다. 페이지에서 데이터를 수집하는 로봇을 상상해보세요. 여기서는 파이썬과 셀레늄을 사용하여 트위터 데이터를 집중적으로 다룹니다.

  • Q: 트위터 데이터를 스크래핑하려면 어떻게 시작하나요?

    트위터 데이터를 스크래핑하려면 먼저 컴퓨터를 설정해야 합니다. 여기에는 웹 브라우저를 제어하는 데 도움이 되는 소프트웨어인 셀레늄을 설치하는 것이 포함됩니다. 그런 다음, 셀레늄이 Google Chrome과 함께 작동할 수 있도록 하는 도구인 ChromeDriver를 다운로드해야 합니다.

  • Q: ChromeDriver란 무엇이며 왜 필요한가요?

    ChromeDriver는 셀레늄과 Google Chrome을 위한 번역기와 같습니다. 셀레늄이 Chrome 브라우저와 상호작용하는 방법을 이해하는 데 도움을 줍니다. 셀레늄이 버튼 클릭이나 트위터에 정보 입력과 같은 작업을 자동화할 수 있도록 필요합니다.

  • Q: 스크래핑에서 성능 로그란 무엇인가요?

    성능 로그는 웹 스크래핑 중에 발생하는 모든 사항을 기록하는 일기와 같습니다. 스크래퍼(셀레늄)와 트위터 페이지 간의 모든 데이터 교환을 추적하여 프로그램이 어떤 요청을 하고 있는지 이해하는 데 도움이 됩니다.

  • Q: 트위터를 스크래핑하기 전에 고려해야 할 사항은 무엇인가요?

    트위터를 스크래핑하기 전에 트위터 계정에 로그인하고 트위터 데이터에 접근할 수 있는 권한을 증명하는 auth_token을 가져와야 합니다. 또한, 트위터의 규칙을 존중하여 차단되지 않도록 주의해야 합니다.

  • Q: 스크래핑 중 차단되지 않으려면 어떻게 해야 하나요?

    차단되지 않도록 요청 간에 지연을 두고, 프록시를 회전시키며, 짧은 시간 내에 너무 많은 요청을 하지 않도록 주의하세요.