1

JSoup を使用して Java で Google Scholar 用の Web スクレイパーを作成しました。スクレーパーは Scholar で DOI を検索し、この論文の引用を見つけます。このデータは研究に必要です。

ただし、スクレーパーは最初のリクエストに対してのみ機能します。.. その後、スクレーパーは Scholar サイトでキャプチャに遭遇します。

ただし、ブラウザ (Chrome) で Web サイトを開くと、Google Scholar は正常に開きます。

これはどのように可能ですか?すべてのリクエストは同じ IP アドレスから来ています。これまでのところ、次のオプションを試しました。

  • リクエストに対してランダムなユーザー エージェントを選択します (5 つのユーザー エージェントのリストから)
  • リクエスト間の 5 ~ 50 秒のランダムな遅延
  • TOR プロキシを使用します。ただし、ほとんどすべてのエンドノードはすでに Google によってブロックされています

Chrome から Scholar へのリクエストを分析すると、一部のセッション ID で Cookie が使用されていることがわかります。おそらくこれが、Chrome リクエストがブロックされない理由です。この Cookie を JSoup でのリクエストに使用することはできますか?

ありがとうございました!

4

1 に答える 1

2

思いつくのは次の3つです。

  1. リクエスト間で Cookie を保存していません。最初のリクエストで Cookie を保存し、次のリクエストのためにサーバーに渡す必要があります (Referer ヘッダーを設定しても害はありません)。ここに例があります。
  2. Google が注意を払っていた場合、最初のリクエストでページに css/js/images が読み込まれなかったことがわかります。これは、あなたがボットであることの確かな兆候です。
  3. ページが読み込まれると、Javascript がページ内で何かを実行します。

最初のオプションが最も可能性が高いと思います。Chrome からのリクエストに表示されるヘッダーをできるだけ多く Java コードにコピーしてみてください。

于 2013-05-22T11:19:24.923 に答える