Python ve Selenium ile Twitter Tweetlerini Kazıma
Kazınmış Veri Örneği
{
"type": "tweet",
"id": 1843447413824209200,
"viewCount": "51275823",
"url": "https://x.com/elonmusk/status/1843447413824209160",
"twitterUrl": "https://twitter.com/elonmusk/status/1843447413824209160",
"text": "It is a surefire way for the Dems to turn America in a one-party state, just like California",
"isQuote": true,
"retweetCount": 59493,
"replyCount": 11090,
"likeCount": 250068,
"quoteCount": 1661,
"createdAt": "Tue Oct 08 00:24:47 +0000 2024",
"lang": "en",
"quoteId": "1843379457605939258",
"bookmarkCount": 11177,
"isReply": false,
"source": "Twitter for iPhone",
"author": {
"type": "user",
"username": "elonmusk",
"url": "https://x.com/elonmusk",
"twitterUrl": "https://x.com/elonmusk",
"id": "44196397",
"name": "Elon Musk",
"isVerified": false,
"isBlueVerified": true,
"verifiedType": "",
"profilePicture": "https://pbs.twimg.com/profile_images/1849727333617573888/HBgPUrjG_normal.jpg",
"coverPicture": "https://pbs.twimg.com/profile_banners/44196397/1726163678",
"description": "Read @America to understand why I’m supporting Trump for President",
"location": "",
"followers": 202400789,
"following": 794,
"protected": false,
"status": "",
"canDm": false,
"canMediaTag": false,
"createdAt": "Tue Jun 02 20:12:29 +0000 2009",
"advertiserAccountType": "",
"analyticsType": "",
"entities": {
"description": {
"urls": []
},
"url": {
"urls": [
{
"display_url": "TheAmericaPAC.org",
"expanded_url": "http://TheAmericaPAC.org",
"url": "https://t.co/DjyKIO6ePx",
"indices": [
0,
23
]
}
]
}
},
"fastFollowersCount": 0,
"favouritesCount": 83676,
"geoEnabled": false,
"hasCustomTimelines": true,
"hasExtendedProfile": false,
"isTranslator": false,
"mediaCount": 2637,
"profileBackgroundColor": "",
"statusesCount": 55447,
"translatorTypeEnum": "",
"withheldInCountries": [],
"affiliatesHighlightedLabel": {
"label": {
"url": {
"url": "https://twitter.com/X",
"urlType": "DeepLink"
},
"badge": {
"url": "https://pbs.twimg.com/profile_images/1683899100922511378/5lY42eHs_bigger.jpg"
},
"description": "X",
"userLabelType": "BusinessLabel",
"userLabelDisplayType": "Badge"
}
}
},
"quote": {
"type": "tweet",
"id": "1843379457605939258",
"text": "Elon Musk explains how this will be our last real election if Kamala Harris wins.\n\nEveryone must watch this. https://t.co/DoBh9qM7K7",
"retweetCount": 10725,
"replyCount": 1848,
"likeCount": 38268,
"quoteCount": 790,
"createdAt": "Mon Oct 07 19:54:45 +0000 2024",
"lang": "en",
"bookmarkCount": 5143,
"author": {
"type": "user",
"username": "EndWokeness",
"url": "https://x.com/EndWokeness",
"twitterUrl": "https://x.com/EndWokeness",
"id": "1552795969959636992",
"name": "End Wokeness",
"isVerified": false,
"isBlueVerified": true,
"verifiedType": "",
"profilePicture": "https://pbs.twimg.com/profile_images/1563691268793946117/OedvhFeS_normal.jpg",
"coverPicture": "https://pbs.twimg.com/profile_banners/1552795969959636992/1720913469",
"description": "Fighting, exposing, and mocking wokeness. DM for submissions",
"location": "",
"followers": 3107102,
"following": 1177,
"protected": false,
"status": "",
"canDm": true,
"canMediaTag": true,
"createdAt": "Thu Jul 28 23:20:28 +0000 2022",
"advertiserAccountType": "",
"analyticsType": "",
"entities": {
"description": {
"urls": []
}
},
"fastFollowersCount": 0,
"favouritesCount": 13138,
"geoEnabled": false,
"hasCustomTimelines": true,
"hasExtendedProfile": false,
"isTranslator": false,
"mediaCount": 7219,
"profileBackgroundColor": "",
"statusesCount": 15502,
"translatorTypeEnum": "",
"withheldInCountries": [],
"affiliatesHighlightedLabel": {}
}
}
}
Kurulum Olmadan Kod Çalıştırma
Rehberimiz, Twitter tweet verilerini zahmetsizce kazımak için tam, kullanıma hazır kod sağlar. Python ve Selenium ile veri toplama işlemini otomatikleştirin ve performans günlüklerini etkili bir şekilde yakalayın. Ek bir kurulum gerektirmeden Twitter içgörülerini açığa çıkarın!
Gelişmiş Tweet Filtreleme
Twitter’ın gelişmiş arama yeteneklerini kullanarak belirli kriterlerinize uygun tweetleri hedefleyin. Anahtar kelimeler, tarihler ve etiketlerle filtreleme yaparak, araştırmanızın alakalı ve odaklı olduğundan emin olabilirsiniz.
Adım 1: Ortamınızı Ayarlayın
İlk olarak, tarayıcı eylemlerini otomatikleştirmek için Selenium'u kurun:
pip install -r requirements.txt
Adım 2: ChromeDriver'ı İndirin
Buradan ilgili ChromeDriver'ı bulabilirsiniz: ChromeDriver İndirin
Adım 3: Test İçin Chrome'u Çalıştırın
Bu adım, etkiyi görmek için hata ayıklama amaçlıdır. Görmek istemiyorsanız bu adımı atlayabilirsiniz.
@echo off
start C:\software\chrome-win64\chrome.exe --remote-debugging-port=9223
Adım 4: Chrome Seçeneklerini Ayarlama
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_experimental_option("debuggerAddress", "localhost:9223")
js_script_name = modify_random_canvas_js()
self.browser = self.get_browser(script_files=[js_script_name], record_network_log=True, headless=True)
Adım 5: Selenium ile Tweet Verilerini Arama
self.browser.switch_to.new_window('tab')
url = "https://x.com/explore"
self.browser.get(url=url)
search_box = self.browser.find_element(By.CSS_SELECTOR, '[data-testid="SearchBox_Search_Input"]')
search_box.send_keys(Keys.CONTROL + "a") # Tüm metni seç
search_box.send_keys(Keys.DELETE)
self.browser.implicitly_wait(20)
search_box.send_keys(search_query)
# Aramayı göndermek için Enter tuşuna basın
search_box.send_keys(Keys.RETURN)
self.browser.implicitly_wait(1000)
second_div = self.browser.find_element(By.CSS_SELECTOR,'[data-testid="ScrollSnap-List"] [role="presentation"]:nth-of-type(2)')
Adım 6: Tarayıcı ağ yanıtını izleme
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 'SearchTimeline' in msg:
document_url = message['params'].get('documentURL')
if (not document_url) or ('&f=live' not in document_url):
continue
request_id = message.get("params").get("requestId")
Adım 7: Yanıttan Veri Çıkartma
entries = json.loads(body)['data']['search_by_raw_query']['search_timeline']['timeline']['instructions'][0].get('entries', '')
if not entries:
continue
for entry in entries:
item_content = entry['content'].get('itemContent', '')
if not item_content:
continue
tweet_result = entry['content']['itemContent']['tweet_results']['result']
entry_id = entry['entryId']
Adım 8: Önemli Noktalar
- Twitter'a giriş yapın ve Twitter Çerezini alın.Twitter Çerezini Almayı Öğrenin
- Apify'den API kullanabilirsiniz.
- Tüm kodu GitHub'dan alabilirsiniz.
- Tartışma grubumuza katılın! Buraya Tıklayın
SSS: Sıkça Sorulan Sorular
- S: Python ve Selenium ile Twitter kazıma nedir?
Twitter kazıma, otomatik araçlar kullanarak Twitter'dan veri toplama işlemidir. Bu araçlar, bir tarayıcıyı simüle etmeye, tweet aramaya ve bilgi toplamaya olanak tanır.
- S: Neden Twitter verilerini kazımak isteyim?
Twitter verilerini kazımak, araştırma yapmak, belirli konuları takip etmek veya eğilimleri analiz etmek için faydalıdır. Bu, öğrenciler, işletmeler ve kamuoyunu anlamak isteyen herkes için yararlıdır.
- S: ChromeDriver nedir ve neden ihtiyaç var?
ChromeDriver, Selenium ile Google Chrome arasında bir çevirmen gibidir. Selenium'un Chrome tarayıcısıyla nasıl etkileşimde bulunacağını anlamasına yardımcı olur. Selenium'un Twitter'da buton tıklama veya bilgi girme gibi işlemleri otomatikleştirebilmesi için gereklidir.
- S: Kazıma işlemlerinde performans kaydı nedir?
Performans kaydı, web kazıma sırasında meydana gelen her şeyi kaydeden bir günlük gibidir. Kazıyıcınızın (Selenium) Twitter sayfasıyla yaptığı tüm veri alışverişlerini takip ederek programınızın hangi istekleri yaptığını anlamanıza yardımcı olur.
- S: Kazıma betiğini tarayıcıyı görmeden çalıştırabilir miyim?
Evet, betiğinizi arka planda çalışan 'başsız' modda çalıştırabilirsiniz, böylece ekranınızda görünmez.
- S: Twitter'ı kazımak için hangi araçlara ihtiyacım var?
Evet, bilgisayarınızda Python'un kurulu olması, ayrıca Selenium kütüphanesi ve ChromeDriver'a ihtiyacınız var. Bu araçlar birlikte, web tarayıcısını kontrol etmenizi ve istediğiniz verileri yakalamanızı sağlar.