2017-06-04 7 views
1

ウェブページのコンテンツをクロールしたい - http://www.pgmfi.org/しかし、ページにアクセスすると、ページにリダイレクトされます。http://twiki.pgmfi.org/bin/view他のウェブページにリダイレクトされるウェブページのコンテンツを取得する

jsoupまたはcrawler4jを使用してURL(http://www.pgmfi.org/)のコンテンツをクロールしようとしましたが、次のコンテンツがあります。

Looking for PGMFI.ORG Home ? Please wait redirecting to: http://twiki.pgmfi.org 

しかし、私はそのリダイレクトのWebページ(http://twiki.pgmfi.org/bin/view)からWebページに関する詳細な情報を取得したいです。 jsoupを使って簡単なコードを実行すると、次のようなことが分かりました。

String url = "http://www.pgmfi.org/"; 

Response response = Jsoup.connect(url).followRedirects(false).execute(); 
System.out.println(response.statusCode() + " : " + response.url()); 

//check if URL is redirect? 
System.out.println("Is URL going to redirect : " + response.hasHeader("location")); 
System.out.println("Target : " + response.header("location")); 

出力:

200 : http://www.pgmfi.org/ 
Is URL going to redirect : false 
Target : null 

ので、リダイレクトは明らかに単純ではありません。私の質問 - 何らかの方法があります、私はHTMLの本文を解析せずにページがリダイレクトされているURLを取得できますか?

私は、crawler4jを使用する解決法を推奨します。 jsoupの解決策でさえ私にとっては大丈夫です。

+0

スクラップライブラリがメタリフレッシュベースのリダイレクトをサポートするかどうか、またはどのようにサポートするかを把握する必要があります。そうでない場合は、自分で解析するか、http://twiki.pgmfi.orgでクロールを開始してください。 – pvg

+0

なぜ私はdownvoteを得たのかわかりません。私はこの質問をする前に別の方法を試しましたが失敗しました。元のURLからリダイレクトされたページをクロールする必要があるので、今すぐリダイレクトされたURLから直接クロールすることは考慮していません。 –

+0

あなたが求めていることは本当にはっきりしません。あなたはリダイレクトのタイプに慣れていないかもしれませんか?厳密に言えば、リダイレクトではなく、HTMLの解析に依存しています。 – pvg

答えて

1

crawler4jは、meta-refreshからのURLの抽出をサポートしていません。ただし、crawler4jはそれぞれのメタタグを提供します(HTMLParseDataを参照)。visit(...)メソッドを拡張してFrontierオブジェクトにWebCrawlerというオブジェクトに抽出されたURLを追加することができます。schedule(...)

Frontierは、WebCrawlerprivateアクセス権しか持たないため、具体的なサブクラスでは使用できません。これを変更するには、アクセス修飾子を変更するために(a)それをforkするか、(b)Reflection APIを使用する必要があります。

もう1つの方法は、公式問題追跡ツールhereで問題を開くことです。

関連する問題