وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

دسترسی به API توییتر با پایتون

0 133
زمان لازم برای مطالعه: 9 دقیقه


معرفی

یکی از چیزهایی که توسعه دهندگان پایتون از آن لذت می برند، مطمئناً تعداد زیادی از منابع توسعه یافته توسط جامعه بزرگ آن است. رابط های برنامه نویسی برنامه های کاربردی ساخته شده توسط پایتون (API) یک چیز رایج برای وب سایت ها هستند. تصور اینکه هیچ وب سرویس محبوبی یک کتابخانه API پایتون برای تسهیل دسترسی به خدمات خود ایجاد نکرده باشد، سخت است. چند ایده از چنین API هایی برای برخی از محبوب ترین سرویس های وب یافت می شود اینجا. در واقع، “Python Wrapper” اصطلاح صحیح تری نسبت به “Python API” است، زیرا یک وب API معمولاً یک رابط برنامه نویسی برنامه کاربردی عمومی را ارائه می دهد، در حالی که کتابخانه های خاص زبان برنامه نویسی کد ایجاد می کنند تا اطراف آن را به توابع آسان بپیچند. . به هر حال، ما در طول این مقاله از هر دو اصطلاح به جای هم استفاده خواهیم کرد.

در این پست وبلاگ ما تمرکز می کنیم روی را توییتر API، نشان دهید که چگونه تنظیم اعتبار شما با توییتر انجام می شود و چند بسته بندی مبتنی بر پایتون را مقایسه کنید روی مشارکت جامعه سپس چند نمونه از استفاده از Twitter API برای جستجوی توییت‌ها و ایجاد جریانی از توییت‌ها در زمان واقعی را نشان می‌دهیم. روی یک موضوع خاص در نهایت، داده های ذخیره شده را بررسی می کنیم.

مروری بر API توییتر

API های زیادی وجود دارد روی پلتفرم توییتر که توسعه دهندگان نرم افزار می توانند با آن درگیر شوند، با امکان نهایی برای ایجاد سیستم های کاملاً خودکار که با توییتر تعامل دارند. در حالی که این ویژگی می‌تواند با استخراج بینش از داده‌های توییتر برای شرکت‌ها مفید باشد، اما برای پروژه‌های مقیاس کوچکتر، تحقیقات و سرگرمی نیز مناسب است. در اینجا چند مورد از قابل توجه ترین API های ارائه شده توسط Twitter آورده شده است:

  • توییت ها: جستجو، ارسال، فیلتر کردن، تعامل، پخش جریانی و غیره.
  • تبلیغات: مدیریت کمپین و مخاطبان، تجزیه و تحلیل.
  • پیام های مستقیم (هنوز در نسخه بتا): ارسال و دریافت، پاسخ های مستقیم، پیام های خوش آمدگویی و غیره.
  • حساب ها و کاربران (بتا): مدیریت حساب، تعامل با کاربر.
  • رسانه: آپلود و دسترسی به عکس ها، فیلم ها و GIF های متحرک.
  • روندها: موضوعات پرطرفدار در یک مکان مشخص.
  • Geo: اطلاعاتی در مورد مکان های شناخته شده یا مکان های نزدیک به یک مکان.

امکانات بسیار بیشتری با API های توییتر وجود دارد که در این لیست گنجانده نشده اند. توییتر همچنین با افزودن گهگاهی APIهای جدید و به روز رسانی APIهای موجود، به طور مداوم دامنه خدمات خود را گسترش می دهد.

گرفتن اعتبار

قبل از استفاده از Twitter API، ابتدا به یک حساب کاربری توییتر نیاز دارید و برخی از اعتبارنامه ها را به دست آورده باشید. را process دریافت مدارک ممکن است با گذشت زمان تغییر کند، اما در حال حاضر به شرح زیر است:

  • به مدیریت برنامه مراجعه کنید page در https://apps.twitter.com/و با حساب توییتر خود وارد شوید
  • کلیک روی دکمه “ایجاد برنامه جدید” را وارد کنید، جزئیات را پر کنید و با شرایط خدمات موافقت کنید
  • به بخش «کلیدها و نشانه‌های دسترسی» بروید و کلید و رمز مصرف‌کننده خود را یادداشت کنید.
  • در همان قسمت کلیک کنید روی دکمه “Create my access token”.
  • به رمز دسترسی و رمز دسترسی خود توجه داشته باشید

و این همه است. کلید/راز مصرف کننده برای احراز هویت برنامه ای که از API توییتر استفاده می کند استفاده می شود، در حالی که رمز دسترسی/راز هویت کاربر را تأیید می کند. همه این پارامترها باید به عنوان رمز عبور در نظر گرفته شوند و نباید به صورت متن ساده در کد شما گنجانده شوند. یک راه مناسب این است که آنها را در یک فایل JSON “twitter_credentials.json” ذخیره کنید و در صورت نیاز این مقادیر را از کد خود بارگیری کنید.

import json


credentials = {}
credentials('CONSUMER_KEY') = ...
credentials('CONSUMER_SECRET') = ...
credentials('ACCESS_TOKEN') = ...
credentials('ACCESS_SECRET') = ...


with open("twitter_credentials.json", "w") as file:
    json.dump(credentials, file)

پایتون راپر

پایتون یکی از زبان های برنامه نویسی است که بیشترین تعداد زبان توسعه یافته را دارد لفاف ها برای Twitter API. بنابراین، اگر مدتی است از هر یک از آنها استفاده نکرده باشید، مقایسه آنها دشوار است. احتمالاً یک راه خوب برای انتخاب ابزار مناسب این است که اسناد آنها را بررسی کنید و به امکاناتی که ارائه می دهند و اینکه چگونه با ویژگی های برنامه شما تناسب دارند نگاه کنید. در این بخش، ما بسته‌بندی‌های API مختلف را با استفاده از تعامل جامعه Python در پروژه‌های GitHub خود مقایسه می‌کنیم. چند معیار مناسب برای مقایسه عبارتند از: تعداد مشارکت کنندگان، تعداد دریافتی ستاره ها، تعداد ناظران، بلوغ کتابخانه در بازه زمانی از اولین انتشار و غیره.

_جدول 1 _: کتابخانه های پایتون برای API توییتر به ترتیب تعداد ستاره های دریافتی.

جدول بالا تعدادی از محبوب ترین کتابخانه های پایتون را برای API توییتر فهرست کرده است. اکنون بیایید از یکی از آنها برای جستجو در توییت ها، دریافت اطلاعات و کاوش استفاده کنیم.

نمونه های Twython

ما انتخاب کرده ایم کتابخانه twython به دلیل ویژگی‌های متنوع آن که با API‌های مختلف توییتر هماهنگ است، بلوغ آن – اگرچه هیچ اطلاعاتی در مورد اولین انتشار آن وجود ندارد، اما اطلاعاتی وجود دارد که نسخه 2.6.0 حدود 5 سال پیش ظاهر شد و پشتیبانی آن از جریان توییت‌ها. در اولین مثال ما از آن استفاده خواهیم کرد جستجوی API برای جستجوی توییت های حاوی رشته “learn python”، و بعد روی ما یک مثال واقعی تر را با استفاده از توییتر نشان خواهیم داد Streaming API.

جستجوی API

در این مثال ما یک پرس و جو برای Search API با کلمه کلیدی جستجو “یادگیری” ایجاد می کنیم python”، که محبوب ترین توییت های عمومی در 7 روز گذشته را برمی گرداند. توجه داشته باشید که از آنجایی که کلمه کلیدی ما از دو کلمه “یادگیری” و “” تشکیل شده است.python”، هر دو باید در متن توییت ظاهر شوند، و نه لزوماً به صورت یک عبارت پیوسته. ابتدا اجازه دهید کتابخانه را نصب کنیم. ساده ترین راه استفاده از آن است. pip، اما گزینه های دیگر نیز در لیست ذکر شده است اسناد نصب.

$ pip install twython

در مرحله بعدی، ما import کلاس Twython، یک شی از آن را نمونه سازی کنید و عبارت جستجوی ما را ایجاد کنید. ما فقط از چهار آرگومان در پرس و جو استفاده خواهیم کرد: q، result_type، count و langبه ترتیب برای کلمه کلیدی جستجو، نوع، تعداد و زبان نتایج. توییتر همچنین آرگومان های دیگری را برای تنظیم دقیق عبارت جستجو تعریف می کند که می توان آنها را پیدا کرد اینجا.


from twython import Twython
import json


with open("twitter_credentials.json", "r") as file:
    creds = json.load(file)


python_tweets = Twython(creds('CONSUMER_KEY'), creds('CONSUMER_SECRET'))


query = {'q': 'learn python',
        'result_type': 'popular',
        'count': 10,
        'lang': 'en',
        }

در نهایت می توانیم از شی Twython خود برای فراخوانی استفاده کنیم search متد، که دیکشنری از search_metadata و statuses – نتایج پرس و جو ما فقط نگاه خواهیم کرد statuses بخش، و بخشی از تمام اطلاعات را در a ذخیره کنید pandas چارچوب داده، برای ارائه آن در یک جدول.

import pandas as pd


dict_ = {'user': (), 'date': (), 'text': (), 'favorite_count': ()}
for status in python_tweets.search(**query)('statuses'):
    dict_('user').append(status('user')('screen_name'))
    dict_('date').append(status('created_at'))
    dict_('text').append(status('text'))
    dict_('favorite_count').append(status('favorite_count'))


df = pd.DataFrame(dict_)
df.sort_values(by='favorite_count', inplace=True, ascending=False)
df.head(5)
تاریخ تعداد_مورد علاقه متن کاربر
1 جمعه 12 ژانویه 21:50:03 +0000 2018 137 سال 2017 سال پایتون بود. ما به راه افتادیم که … کد آکادمی
3 دوشنبه 8 ژانویه 23:01:40 + 0000 2018 137 راهنمای گام به گام یادگیری #Python برای #DataS… KirkDBorne
4 دوشنبه 8 ژانویه 11:13:02 + 0000 2018 109 Resetter ابزار جدیدی است که با پایتون و p… linuxfoundation
8 شنبه 06 ژانویه 16:30:06 + 0000 2018 96 مفتخریم اعلام کنیم که این هفته… دیتا کمپ
2 یکشنبه 07 ژانویه 19:00:36 + 0000 2018 94 آموزش برنامه نویسی در پایتون با پایتون توسط… فروتن

بنابراین ما چند توییت جالب دریافت کردیم. توجه داشته باشید که اینها محبوب ترین توییت هایی هستند که حاوی کلمات “یادگیری” و “است.python” در 7 روز گذشته. برای کاوش داده ها در تاریخ، باید طرح Premium یا Enterprise Search API را خریداری کنید.

Streaming API

در حالی که مثال قبلی یک جستجوی یکباره را نشان داد، مورد جالب‌تر جمع‌آوری جریانی از توییت‌ها است. این کار با استفاده از Twitter Streaming API، و Twython یک راه آسان برای انجام آن از طریق TwythonStreamer کلاس ما باید یک کلاس تعریف کنیم MyStreamer که ارث می برد TwythonStreamer و سپس لغو کنید on_success و on_error روش ها به شرح زیر

را on_success زمانی که توییتر داده‌ها را برای ما ارسال می‌کند، روش به‌طور خودکار فراخوانی می‌شود، در حالی که on_error زمانی که مشکلی با API پیش می‌آید، متد فراخوانی می‌شود (معمولاً به دلیل محدودیت‌های APIهای توییتر). روش اضافه شده save_to_csv یک راه مفید برای ذخیره توییت ها در فایل است.

مشابه مثال قبلی، ما تمام داده ها را در یک توییت ذخیره نمی کنیم، بلکه فقط فیلدهایی را که به آنها علاقه مندیم، مانند: هشتگ های استفاده شده، نام کاربری، مکان کاربر و متن خود توییت ذخیره نمی کنیم. اطلاعات جالب زیادی در یک توییت وجود دارد، بنابراین با خیال راحت آن را آزمایش کنید. توجه داشته باشید که ما مکان توییت را به صورت فعلی ذخیره می کنیم روی نمایه کاربر، که ممکن است با مکان فعلی یا واقعی کاربر ارسال کننده توییت مطابقت نداشته باشد. این به این دلیل است که تنها بخش کوچکی از کاربران توییتر مکان فعلی خود را ارائه می دهند – معمولاً در آن coordinates کلید داده های توییت

from twython import TwythonStreamer
import csv


def process_tweet(tweet):
    d = {}
    d('hashtags') = (hashtag('text') for hashtag in tweet('entities')('hashtags'))
    d('text') = tweet('text')
    d('user') = tweet('user')('screen_name')
    d('user_loc') = tweet('user')('location')
    return d
    
    

class MyStreamer(TwythonStreamer):     

    
    def on_success(self, data):

        
        if data('lang') == 'en':
            tweet_data = process_tweet(data)
            self.save_to_csv(tweet_data)

    
    def on_error(self, status_code, data):
        print(status_code, data)
        self.disconnect()
        
    
    def save_to_csv(self, tweet):
        with open(r'saved_tweets.csv', 'a') as file:
            writer = csv.writer(file)
            writer.writerow(list(tweet.values()))

کار بعدی این است که یک شی از را نمونه سازی کنید MyStreamer کلاس با اعتبارنامه های ما به عنوان آرگومان ارسال شده است، و ما از آن استفاده خواهیم کرد filter روشی برای جمع آوری تنها توییت هایی که به آنها علاقه مندیم. ما فیلتر خود را با استفاده از آن ایجاد می کنیم track آرگومانی که در مورد ما، کلمات کلیدی فیلتر را فراهم می کند.python”. علاوه بر track استدلال، امکانات بیشتری برای تنظیم دقیق فیلتر وجود دارد که در فهرست ذکر شده است پارامترهای اصلی جریانمانند: جمع‌آوری توییت‌ها از کاربران منتخب، زبان‌ها، مکان‌ها و غیره. نسخه‌های پولی Streaming API گزینه‌های فیلتر بسیار بیشتری را ارائه می‌کنند.


stream = MyStreamer(creds('CONSUMER_KEY'), creds('CONSUMER_SECRET'), 
                    creds('ACCESS_TOKEN'), creds('ACCESS_SECRET'))

stream.statuses.filter(track='python')

با کد بالا، ما اطلاعات حدود 10000 توییت حاوی کلمه کلیدی ” را جمع آوری کردیم.pythonدر قسمت بعدی، به بررسی مختصری از هشتگ‌های موجود و مکان‌های کاربری می‌پردازیم.

تجزیه و تحلیل مختصر داده ها

Twitter API یک چیز قدرتمند است که برای تحقیق در مورد افکار عمومی، تجزیه و تحلیل بازار، دسترسی سریع به اخبار و موارد استفاده دیگری که خلاقیت شما می تواند پشتیبانی کند بسیار مناسب است. پس از جمع‌آوری دقیق توییت‌ها، یکی از کارهای متداول این است که داده‌ها را در کجا تجزیه و تحلیل کنید تحلیل احساسات نقش مهمی در استخراج سیستماتیک اطلاعات ذهنی از متن دارد. به هر حال، تجزیه و تحلیل احساسات حوزه بزرگی است که باید در بخش کوچکی از یک پست وبلاگ به آن پرداخته شود، بنابراین در این قسمت ما فقط برخی از تجزیه و تحلیل داده های اولیه را در مورد مکان و هشتگ های استفاده شده توسط افرادی که توییت می کنند انجام می دهیم.python”.

لطفاً توجه داشته باشید که هدف این مثال‌ها فقط نشان دادن این است که داده‌های API توییتر برای چه مواردی می‌تواند مورد استفاده قرار گیرد – نمونه کوچک توییت‌های ما نباید در نتیجه‌گیری استفاده شود، زیرا نماینده خوبی برای کل جمعیت توییت‌ها نیست، و نه زمان جمع آوری مستقل و یکنواخت بود.

اول بیایید import داده های ما از فایل “saved_tweets.csv” و print از چند ردیف

import pandas as pd
tweets = pd.read_csv("saved_tweets.csv")
tweets.head()
هشتگ ها متن کاربر محل
0 (“IBM”) RT @freschesolution: فردا با @OC به ما بپیوندید… براونپا NaN
1 () pylocus 1.0.1: بسته محلی سازی https://t…. pypi_updates2 NaN
2 () humilis-push-processor 0.0.10: Humilis push ev… pypi_updates2 NaN
3 (“پایتون”، “python’، ‘postgresql’) #Python Digest منتشر شد! https://t.co/LEmyR3yDMh… horstwilmes زوریخ
4 (‘NeuralNetworks’، ‘Python’، ‘KDN’) RT @kdnuggets: راهنمای مبتدیان برای #NeuralNet… ژئودگاز لاکویلا، ایتالیا

رایج ترین هشتگ هایی که با کلمه کلیدی ما مطابقت دارند کدامندpythonاز آنجایی که تمام داده‌های DataFrame ما به صورت رشته‌هایی از جمله براکت‌ها در نشان داده می‌شوند hashtags ستون، برای به دست آوردن لیستی از هشتگ ها، باید از یک لیست رشته ها، به لیستی از لیست ها، به لیستی از هشتگ ها برویم. سپس از آن استفاده خواهیم کرد Counter کلاس برای شمارش ورودی های هشتگ در لیست ما، و print لیست مرتب شده ای از 20 هشتگ رایج.

from collections import Counter
import ast

tweets = pd.read_csv("saved_tweets.csv")


list_hashtag_strings = (entry for entry in tweets.hashtags)
list_hashtag_lists = ast.literal_eval(','.join(list_hashtag_strings))
hashtag_list = (ht.lower() for list_ in list_hashtag_lists for ht in list_)


counter_hashtags = Counter(hashtag_list)
counter_hashtags.most_common(20)
(('python', 1337),
 ('datascience', 218),
 ('bigdata', 140),
 ('machinelearning', 128),
 ('deeplearning', 107),
 ('django', 93),
 ('java', 76),
 ('ai', 76),
 ('coding', 68),
 ('100daysofcode', 65),
 ('javascript', 64),
 ('iot', 58),
 ('rstats', 52),
 ('business', 52),
 ('tech', 48),
 ('ruby', 45),
 ('programming', 43),
 ('cybersecurity', 43),
 ('angularjs', 41),
 ('pythonbot_', 41))

در مرحله بعد، می‌توانیم از موقعیت مکانی کاربر برای پاسخگویی استفاده کنیم – کدام مناطق جهان بیشتر در مورد “توئیت می‌کنند”pythonبرای این مرحله، ما از geocode روش از ژئوپی کتابخانه ای که مختصات یک مکان ورودی داده شده را برمی گرداند. برای تجسم نقشه گرمای جهانی از توییت‌ها، از آن استفاده می‌کنیم gmplot کتابخانه یک یادآوری: داده های کوچک ما نماینده واقعی جهان نیستند.

from geopy.geocoders import Nominatim
import gmplot

geolocator = Nominatim()


coordinates = {'latitude': (), 'longitude': ()}
for count, user_loc in enumerate(tweets.location):
    try:
        location = geolocator.geocode(user_loc)
        
        
        if location:
            coordinates('latitude').append(location.latitude)
            coordinates('longitude').append(location.longitude)
            
    
    except:
        pass
    

gmap = gmplot.GoogleMapPlotter(30, 0, 3)


gmap.heatmap(coordinates('latitude'), coordinates('longitude'), radius=20)


gmap.draw("python_heatmap.html")

کد بالا نقشه حرارتی را در شکل زیر تولید می کند که فعالیت بالاتری را در ” نشان می دهد.pythonتوییت‌هایی در ایالات متحده، بریتانیا، نیجریه و هند. یکی از نکات منفی رویکرد توصیف‌شده این است که ما هیچ گونه پاک‌سازی داده‌ها را انجام ندادیم؛ مشخص شد توییت‌های زیادی از یک مکان یا چندین مکان که یک توییت را تولید می‌کنند، وجود دارد. البته این نمونه‌ها باید دور ریخته شوند تا تصویر واقعی‌تری از توزیع جغرافیایی انسان‌هایی که توییت می‌کنند به دست آید.python”. دومین پیشرفت به سادگی جمع آوری داده های بیشتر در دوره های طولانی تر و بدون وقفه است.

نقشه حرارتی توییت

منابع

آیا می خواهید در مورد استفاده از پایتون برای دسترسی به API توییتر بیشتر بدانید؟ سعی کنید دوره ای مانند را بررسی کنید تکه‌های اندازه بایت: تحلیل احساسات توییتر در پایتون برای بررسی عمیق تر در استفاده از API توییتر برای پروژه های علم داده با پایتون.

نتیجه گیری

در این پست وبلاگ ما بخش بسیار کمی از API توییتر را ارائه کردیم. به طور کلی، توییتر ابزار بسیار قدرتمندی برای درک افکار عمومی، انجام تحقیقات و تجزیه و تحلیل بازار است، و بنابراین API های آن یک راه عالی برای کسب و کارها برای ایجاد ابزارهای خودکار برای ترسیم بینش های مرتبط با حوزه کاری خود هستند. نه تنها کسب و کارها، بلکه افراد نیز می توانند از API ها برای ساخت اپلیکیشن های خلاقانه استفاده کنند.

ما همچنین تعدادی از محبوب‌ترین wrapper‌های Python را فهرست کردیم، اما مهم است که توجه داشته باشیم که wrapper‌های مختلف امکانات مختلفی از APIهای توییتر را اجرا می‌کنند. بنابراین باید بسته بندی پایتون را با توجه به هدف آن انتخاب کنید. دو مثالی که ما با Search و Streaming API نشان دادیم، به اختصار شرح داده شد process جمع آوری توییت ها، و برخی از بینش های احتمالی که می توانند به دست آورند. با خیال راحت خودتان آنهایی را ایجاد کنید!

منابع

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-28 13:16:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید