تشارك هذه المقالة زاحف Zhihu المستند إلى Java لالتقاط المعلومات الأساسية لمستخدمي Zhihu ، استنادًا إلى httpclient 4.5 للرجوع إليه. المحتوى المحدد كما يلي
تفاصيل:
Crawl 90W+ معلومات المستخدم (في الأساس جميع المستخدمين النشطين في الداخل)
الفكرة العامة:
1. أولاً ، محاكاة تسجيل الدخول إلى Zhihu. بعد تسجيل الدخول بنجاح ، قم بتسلسل ملفات تعريف الارتباط إلى القرص. لا تحتاج إلى تسجيل الدخول في كل مرة في المستقبل (إذا لم تقم بمحاكاة تسجيل الدخول ، فيمكنك ملفات ملفات تعريف الارتباط مباشرة من المتصفح).
2. قم بإنشاء تجمعين خيطين وتخزين واحد. مجموعة من المواضيع لزحف صفحات الويب هي المسؤولة عن تنفيذ الطلبات ، وإرجاع محتوى صفحة الويب ، وحفظها في التخزين. والآخر هو تحليل تجمع مؤشرات ترابط صفحة الويب ، وهو مسؤول عن إخراج محتوى صفحة الويب من التخزين وتوحله ، وتحليل معلومات المستخدم وحفظه في قاعدة البيانات ، وتحليل الصفحة الرئيسية للشخص الذي يتابعه المستخدم ، وإضافة طلب العنوان إلى مجموعة مؤشرات ترابط صفحة الويب المجهول. استمر.
3. فيما يتعلق بإلهاء URL ، قمت بتحويل الرابط الذي تمت زيارته MD5 مباشرة إلى قاعدة البيانات. قبل كل زيارة ، تحقق مما إذا كان الارتباط موجودًا في قاعدة البيانات.
حتى الآن ، تم القبض على 100 واط ، والروابط التي تمت زيارتها هي 220W+. الزحف الآن هم بعض المستخدمين غير النشطين. يجب أن يتم القبض على المستخدمين الأكثر نشاطًا بشكل أساسي.
عنوان المشروع: https://github.com/wycm/mycrawler
رمز التنفيذ:
المؤلف: WO Yan Chen Si Link: https://www.zhihu.com/question/36909173/answer/97643000 المصدر: Zhihu حقوق الطبع والنشر ينتمي إلى المؤلف. لإعادة الطباعة التجارية ، يرجى الاتصال بالمؤلف للحصول على إذن. لإعادة طباعة غير تجارية ، يرجى الإشارة إلى المصدر. /***** param httpclient http client* param context http context* @return*/public boolean login (closleablehtpclient httpclient ، httpclientcontext contex httpget ("https://www.zhihu.com/#signin") ؛ httpclientutil.getWebPage (httpclient ، context ، getRequest ، "UTF-8" ، false) ؛ httppost request = new httppost ("https://www.zhihu.com/login/email") ؛ قائمة <NameValUepair> formparams = new ArrayList <AameValUepair> () ؛ yzm = yzm (httpclient ، السياق ، "https://www.zhihu.com/captcha.gif؟type=login") ؛ // رمز التحقق الطبيعي formparams.add (new basicnamevaluepair ("captcha" ، yzm)) formparams.add (New BasicNameValuePair ("البريد الإلكتروني" ، "البريد الإلكتروني"))) ؛ formparams.add (New BasicNameValuePair ("كلمة المرور" ، "كلمة المرور")) ؛ formparams.add (nullNameNameNameValuePair ( urlencodedformentity (formparams ، "utf-8") ؛} catch (UnsupportedEncodingException e) {E.PrintStackTrace () ؛} request.setentity (intity) ؛ loginState = httpclientutil.getwebpage (httpclient ، request ، request ، "utf-8 jsonobject (loginState) ؛ if (jo.get ("r"). "UTF-8" ، false) ؛ // قم بزيارة الصفحة الرئيسية httpclientutil.serializeObject (context.getCookiestore () ، "الموارد/zhihucookies") ؛ // serialize zhihu cookies ، قم بتسجيل الدخول مباشرة من خلال ملفات تعريف الارتباط في المرة القادمة التي تقوم فيها بتسجيل عودة صحيح ؛ false ؛}}/*** رمز التحقق من التعرف على العين عارية* param httpclient http client* param context http context* param url code uald url) {httpclientutil.downloadFile (httpclient ، السياق ، url ، "d:/test/" ، "1.gif" ، true) ؛ scanner sc = new scanner (system.in) ؛ string yzm = sc.nextline () ؛ return yzm ؛}صورة التكاثر:
ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.