В этой статье разделяет на базирующуюся на Java Crawler Zhihu для получения основной информации пользователей Zhihu, основанного на HTTPClient 4.5 для вашей ссылки. Конкретный контент заключается в следующем
Подробности:
Crawl 90W+ Информация пользователя (в основном все активные пользователи находятся внутри)
Общая идея:
1. Во -первых, имитировать вход в Жиху. После успешного входа в систему сериализуйте куки на диск. Вам не нужно входить в систему каждый раз в будущем (если вы не имитируете логин, вы можете наполнить файлы cookie непосредственно из браузера).
2. Создайте два пула потоков и одно хранилище. Пул потоков для ползания веб -страниц отвечает за выполнение запросов, возврат контента веб -страницы и сохранение его в хранилище. Другое состоит в том, чтобы анализировать пул потоков веб -страницы, который отвечает за извлечение содержимого веб -страницы из хранения и анализа его, проанализировав информацию пользователя и сохранение его в базе данных, анализируя домашнюю страницу человека, за которым следует пользователь, и добавление запроса адреса в пул потоков веб -страницы. Продолжай продолжать.
3. Что касается дедупликации URL, я напрямую преобразую посещаемую ссылку MD5 в базу данных. Перед каждым посещением проверьте, существует ли ссылка в базе данных.
Пока что пользователи 100 Вт были сняты, а посещенные ссылки - 220 Вт+. Пользователи ползали сейчас некоторые неактивные пользователи. Более активные пользователи должны были быть пойманы.
Адрес проекта: https://github.com/wycm/mycrawler
Код реализации:
Автор: wo yan chen si ссылка: https://www.zhihu.com/question/36909173/answer/97643000 Источник: Чиху авторское право принадлежит автору. Для коммерческой перепечатки, пожалуйста, свяжитесь с автором для разрешения. Для некоммерческой перепечатки укажите источник. /***** @param httpclient http client* @param context http context* @return*/public boolean login (closablehttpclient httpclient, httpclientcontext context) {string yzm = null; string loginstate = null; httpget getrequest = new; Httpget ("https://www.zhihu.com/#signin"); httpclientutil.getwebpage (httpclient, context, getrequest, "utf-8", false); httppost request = new Httppost ("https://www.zhihu.com/login/email"); list <mankvaluepair> formparams = new Arraylist <mankvaluepair> (); yzm = yzm (httpclient, context, "https://www.zhihu.com/captcha. Код проверки признания FormParams.add (new BasicnamevaluePair ("captcha", yzm)); formparams.add (new basicnamevaluepair ("_ xsrf", "")); // Этот параметр может использоваться без формапал. BasicNameValuePair («пароль», «пароль»)); formparams.add (new BasicnameValuePair ("movers_me", "true")); urlencodedformentity entity = nul {e.printstacktrace ();} request.setentity (entity); loginstate = httpclientutil.getwebpage (httpclient, контекст, запрос, "utf-8", false); // loginjsonobject jo = new JsonObject (LoginState); if (jo.get ("r"). ToString (). Equals ("0")) {System.out.println ("Вход успешно"); getRequest = new httpget ("https://www.zhhu"); «UTF-8», false); // Посетите домашнюю страницу httpclientutil.serializeobject (context.getCookiestore (), "resources/Zhihucookies"); // serialize zhihu cookie, войдите непосредственно через cookie. * Код проверки распознавания обнаженного глаза* @param httpclient http client* @param context http context* @param url url-код кода* @return*/public string yzm (closablehttpclient httpclient, httpclientContext, строгий url) {httpclient.downlient, httpclientcontext, строгий url) {httpclient.downlient, httpclientcontext, round url) "D:/test/", "1.gif", true); Scanner sc = new Scanner (System.in); string yzm = sc.nextline (); return yzm;}Изображение воспроизведения:
Выше приведено в этой статье, я надеюсь, что это будет полезно для каждого обучения.