この記事では、JavaベースのZhihu Crawlerを共有して、参照のためにHTTPClient 4.5に基づいて、Zhihuユーザーの基本情報をキャプチャします。特定のコンテンツは次のとおりです
詳細:
クロール90W+ユーザー情報(基本的にすべてのアクティブユーザーが中にいます)
一般的なアイデア:
1。最初に、Zhihuへのログインをシミュレートします。正常にログインした後、クッキーをディスクにシリアル化します。将来的に毎回ログインする必要はありません(ログインをシミュレートしない場合は、ブラウザからCookieを直接詰めることができます)。
2. 2つのスレッドプールと1つのストレージを作成します。 Webページをクロールするスレッドのプールは、リクエストの実行、Webページのコンテンツの返品、ストレージに保存する責任があります。もう1つは、Webページスレッドプールを解析することです。これは、ストレージからWebページのコンテンツを取り出して解析し、ユーザーの情報を分析し、データベースに保存し、ユーザーがフォローしている人のホームページを分析し、Crawling Webページスレッドプールにアドレスリクエストを追加することです。続けてください。
3. URLの重複排除に関しては、訪問したリンクMD5を直接データベースに変換します。各訪問の前に、データベースにリンクが存在するかどうかを確認してください。
これまでのところ、100Wのユーザーがキャプチャされており、訪問されたリンクは220W+です。現在、ユーザーが不活発なユーザーになっています。よりアクティブなユーザーが基本的に捕まる必要があります。
プロジェクトアドレス: https://github.com/wycm/mycrawler
実装コード:
著者:Wo Yan Chen SIリンク:https://www.zhihu.com/question/36909173/answer/97643000出典:Zhihu Copyrightは著者に属します。商業転換については、承認については著者に連絡してください。非営利的な再版については、ソースを示してください。 /**** @param httpclient http client* @param context http context* @return*/public boolean login(closeablehttpclient、httpclientcontext context){string yzm = null; string loginstate = null; 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 <namevaluepair> formparams = new arraylist <namevaluepair>(); yzm = yzm(httpclient、context、 "https://www.zhihu.zhihu.com.com.com.com.com.com.gif.type認識検証コードformparams.add(new BasicNameValuePair( "Captcha"、yzm)); formparams.add(new BasicNameValuePair( "_ xsrf"、 "")); "password")) {e.printstacktrace();} request.setEntity(entity); loginstate = httpclientutil.getwebpage(httpclient、context、request、 "utf-8"、false); // loginjsonobject jo = new jsonobject(loginstate); if(jo.get( "r")。toString()。equals( "0")){system.out.println( "login rogin rogin sucessfully"); getRequest = new httpget( "https://www.zhihu.com"); 「UTF-8」、false); //ホームページにアクセスhttpclientutil.serializeObject(context.get.cookiestore()、 "resources/zhihucookies"); false;}}/*** naked-eye認識検証コード* @param httpclient http client* @param context http context* @param url検証コードアドレス*/public string yzm(closeablehttpclient httpclient、httpclientxex url){httpclientutil.downloadfile(httpclient、context、url、 "d:/test/"、 "1.gif"、true); scanner sc = new scanner(system.in); string yzm = sc.nextline(); return yzm;}複製画像:
上記はこの記事に関するものです。すべての人の学習に役立つことを願っています。