検索

ホームページ  >  に質問  >  本文

网页爬虫 - python如何爬取js生成的数据?

我想要爬取豆瓣音乐music.douban.com上的 新碟榜 和 近期热门歌单 ,看源代码好像都是js生成的,请教大家有什么办法可以爬到这些数据?谢谢!

高洛峰高洛峰2887日前472

全員に返信(9)返信します

  • 高洛峰

    高洛峰2017-04-17 17:58:25

    私は Jsoup を使用してクローラーを作成していますが、通常はコンテンツを返さない HTML に遭遇します。ただし、ブラウザには一部のコンテンツが表示されます。これらはすべて、ページの http リクエスト ログを分析します。ページのJSコードを解析して解決します。

    1. 一部のページ要素が非表示になっている -> セレクターを変更して問題を解決する
    2. 一部のデータが js/json オブジェクトに格納されている -> 対応する文字列をインターセプトして解決策を分析する
    3. API インターフェースを介して呼び出し -> データを取得するための偽のリクエスト

    究極の方法もあります
    4. phantomjs や casperjs などのヘッドレスブラウザを使用します

    返事
    0
  • 黄舟

    黄舟2017-04-17 17:58:25

    回答の中には、インターフェイスを分析してインターフェイスを直接クロールすることが可能であると述べたものもあります。さらに、インターフェイスを直接クロールする場合、ほとんどのインターフェイスは json を返すため、HTML を自分で解析する必要はありません。考えるだけで幸せな気持ちになりますよ〜

    ただし、シンプルで使いやすい Phantomjs を使用するなど、他の方法もまだあります。Python は万能ではありません。また、他のツールと組み合わせるとさらに価値が高まります。そんな組み合わせ。

    これは公式のサンプル コードであり、少し変更するだけで実現できます。

    リーリー

    リノベーション

    リーリー

    しかし実際には、多くの場合、ページのコンテンツの解析を開始する前に Ajax が実行されるのを待つ必要があります。このとき、この関数を使用すると、Ajax が実行されるまで待つことができます。このページに対するすべてのリクエストをロードして処理を続行すると、完全にロードされたページが表示され、必要な操作を行うことができます。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:58:25

    データ インターフェースを自分で見つける

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 17:58:25

    それらはすべて API インターフェースによって生成される必要があります

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 17:58:25

    Selenium を使用して新しいディスク チャートをマイニングする例:

    リーリー

    結果:
    本日オープン
    ジェイ・チョウのベッドサイド・ストーリー
    H.A.M.
    3집EX'ACT
    ワイルド
    危険な女
    イン・ザ・ダーク
    昨年は複雑

    返事
    0
  • 阿神

    阿神2017-04-17 17:58:25

    Chrome では、F12 を押してクリックし、リクエストを表示します。URL とパラメータを見つけるのは簡単です。自分で構築して、返されたコンテンツを解析するだけです。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:58:25

    js のこの行は、index.html の下で引用されています。

    リーリー

    この js ファイルを開くと、次のことがわかります

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-04-17 17:58:25

    Chrome を開いて要素を調べ、ネットワーク内で js を探します。通常は、特別な名前の js が探しているものである可能性があります。たとえば、これは、

    返事
    0
  • 黄舟

    黄舟2017-04-17 17:58:25

    最も直接的な方法はセレンを使用することです

    返事
    0
  • キャンセル返事