برای استخراج اطلاعات از توییتر راه های مختلفی وجود داره. اولین راه استفاده از API رسمی توییتر است که از طریق آدرس زیر میتونید درخواست خودتون رو برای توییتر ارسال کنید این مقاله در مورد نحوه دریافت و استفاده از API توییتر نیست اما میخوام خیلی کوتاه چند تا تجربه در مورد گرفتن API توییتر رو براتون بگم. البته این نکات بیشتر برای زمانی است که شما عجله دارید و میخواید خیلی زود دسترسی API توییتر براتون فعال بشه. در غیر این صورت، به صورت عادی درخواستتون رو ارسال کنید و ممکنه یک روز تا یک ماه طول بکشه تا درخواستتون بررسی و تایید بشه. نکته اول اینه که یه اکانت جدید با IP آمریکا بسازید و با شماره آمریکا هم فعالش کنید. اگر شماره Google Voice دارید که خیلی خوبه ولی اگر ندارید میتونید یه شماره مجازی مخصوص توییتر خریداری کنید. شماره مخصوص توییتر رو میتونید از نامبرلند خریداری کنید فرقی نمیکنه از کجا بخرید. من فقط تجربه خودم رو دارم میگیم. ممکنه شما از سایت x خریداری کنید یا از نرم‌افزار y شماره رو بگیرید و بتونید فعال کنید اما من سایت x و نرم‌افزار y رو نمیشناسم. نکته دوم هم اینه که موقعی که دارید فرم درخواست رو پر میکنید سعی کنید مینیمال ترین حالت ممکن درخواست بدید. مثلا فیلد آیا قصد دارید از این اطلاعات خارج از توییتر استفاده کنید؟ آیا سازمان خاصی قراره این اطلاعات رو استفاده کنه؟ موارد این چنینی رو بزنید! دومین راهی که برای استخراج اطلاعات توییتر وجود داره twint است که بدون استفاده از API توییتر به شما اجازه میده اطلاعات رو دریافت و ذخیره کنید. اما مدتی است که twint کار نمیکنه. البته ممکنه در آینده درست بشه ولی در حال حاضر دچار مشکل شده. این نکته رو هم متذکر بشم که آره میلیون ها روش دیگه هم وجود داره ولی الان فقط میخوام این روش رو توضیح بدم و با میلیون ها روش دیگه کاری ندارم: ) در این مقاله قصد دارم به شما یاد بدم چه جوری بدون استفاده از API توییتر و فقط با استفاده جاوا اسکریپت و inspect مرورگر اطلاعات رو از توییتر استخراج کنید. البته قطعا به قدرت API رسمی توییتر و twint نیست ولی کار رو راه میندازه. اگر فکر میکنید روش خوبی نیست کاری که باید انجام بدید اینه که این صفحه رو ببندید: ) من اینجا از فایرفاکس استفاده میکنم اما شما میتونید از گوگل کروم هم استفاده کنید. در ادامه قصد دارم به صورت کاربردی نحوه استخراج اطلاعات رو توضیح بدم در این سناریو هدف ما فقط اینه که username کاربران رو استخراج کنیم. این username ها میتونن موارد زیر باشند: فرض کنید میخوایم لیست فالوور های جان مکافی رو استخراج کنیم. اول باید لینک زیر رو توی مرورگرتون باز کنید: بعد روی صفحه راست کلیک کنید و Inspect رو بزنید. حالا تب Console رو باز کنید: حالا کدی که در gist زیر قرار دادم رو در اینجا paste کنید و بعد اینتر بزنید تا اجرا بشه نکات مربوط به این کد: این کد میاد هر میلی ثانیه یکبار صفحه رو اسکرول میکنه و اطلاعات رو داخل متغیر set ذخیره میکنه. دلیل استفاده از Set اینه که یوزرنیم تکراری ذخیره نکنیم. چون فرقی نمیکنه صفحه رو اسکرول کنیم یا نکنیم، در هر صورت هر میلی ثانیه هر یوزرنیمی که داخل صفحه ببینه رو استخراج میکنه. پس شما میتونید عدد رو تو کد بالا تغییر بدید. مثلا بذار هر میلی ثانیه. عدد در کد بالا نشون میده که چند بار این عمل اسکرول انجام بشه. چون معمولا عدد دقیقش رو نمیدونم یه عدد بزرگ میذاریم تا همه یوزرنیم ها رو جمع آوری کنه. حالا فرض کنید ما عدد رو گذاشتیم و روی دیگه همه اطلاعات رو جمع آوری کرد. حالا چیکار کنیم؟ کافیه تب Debugger رو انتخاب کنید و Pause رو بزنید توی حلقه for جایی که کد زیر رو نوشتم: اینجا خیلی کار ها میتونید انجام بدید. دیگه من فرض میکنم شما برنامه نویس هستید. مثلا میتونید قبل از اضافه کردن به set یه شرط بذارید که یوزرنیم حتما فلان ویژگی رو داشته باشه. حالا زمانی که کار به اتمام رسید و ما Pause رو زدیم چه جوری یوزرنیم ها رو دریافت کنیم؟ برای این منظور کدی که در gist زیر قرار دادم رو کپی کنید و در تب Console اون رو paste کنید و اینتر بزنید. زمانی که این کار رو انجام بدید یه فایل با نام followers . txt دانلود میشه که هر سطر اون یوزرنیم یک کاربر رو نشون میده. حالا میتونید این فایل رو ببرید هر جایی که میخواید و پردازش بعدی رو انجام بدید. حالا که داریم لیست فالوور ها و فالووینگ ها رو استخراج میکنیم یه کاربرد هم بهتون یاد بدم. با استفاده کدی که در gist زیر قرار دادم میتونید لیست افرادی که شما فالو کردید اما اونها بک ندادند رو استخراج کنید: اول صفحه Following های خودتون رو باز کنید. به جای num _ following تعداد Following های خودتون رو قرار بدید و بعد کد رو اجرا کنید. در خروجی لیست افراد مورد نظر رو نمایش میده: ) فرض کنید میخوایم لیست افراد فارسی زبانی که توی توییتشون از کلمه McAfee استفاده کردند رو استخراج کنیم. برای این منظور کافیه McAfee lang : fa رو جستجو کنیم و بعد Latest رو انتخاب کنیم که آخرین توییت ها رو بیاره: برای استخراج لیست یوزرنیم ها میتونید دقیقا از همون کدی که در مرحله قبلی داشتیم استفاده کنید. به همین راحتی! برای استخراج لیست یوزرنیم افرادی که توییت x رو کوت کردند فقط کافیه صفحه کوت ها رو باز کنید و دقیقا از همون کد مرحله قبل برای انجام این کار استفاده کنید! فقط یه نکته ریز اینجا وجود داره. مثلا فرض کنید میخوایم کوت های توییت زیر @ jack رو استخراج کنیم: اگر از کدی که بالاتر گفتم استفاده کنید، یوزرنیم خود jack هم توی لیست کوت کننده ها میاد. با توجه به اینکه ما داریم از Set استفاده میکنیم، یوزرنیم jack فقط یکبار ذخیره میشه. اما اگر نمیخواید حتی یکبار هم ذخیره بشه یه شرطی بذارید که اگر یوزرنیم استخراج شده برابر با jack بود ذخیره نکنه! تو بعضی از حالت ها، یوزرنیم خودتون رو هم ذخیره میکنه. چرا؟ چون توی صفحه اصلی توییتر وب اون گوشه پایین سمت چپ یوزرنیم خودتون رو هم نوشته! پس بازم اگر نمیخواید یوزرنیم خودتون ذخیره بشه یا آخر کار دستی حذفش کنید یا یه شرط بذارید که مشکل حل بشه. در مورد لایک و ریتوییت به دلیل محدودیتی که داره هنوز راه حلی برای ندارم. یه مقدار فکر میکنم ببینم چه راه حلی میتونم براش پیدا کنم. اگر پیدا کردم همین پست رو آپدیت میکنم. فعلا فقط کوت ها رو میشه اینجوری استخراج کرد: برای این کار ابتدا از Settings بخش Privacy and safety رو باز کنید. از قسمت Mute and block و سپس Blocked accounts میتونید لیست افرادی که بلاک کردید رو مشاهده کنید و با همون کد مرحله قبل اینجا هم میتونید یوزرنیم ها رو استخراج کنید. برای مثال شما کلمه x رو در توییتر سرچ کردید و میخواید تعداد لایک، ریپلای و ریتوییت رو ذخیره کنید. برای این منظور از کد زیر میتونید استفاده کنید. چون بخش های مختلف کد رو قبلا توضیح دادم دیگه اینجا توضیح اضافه‌ای نمیدم: برای دانلود اطلاعات استخراج شده هم میتونید از کد زیر استفاده کنید: