[Selenium (chrome) + Python] nレベルリファレンス/参考文献クローリング&クローラーライブラリ紹介

爬虫類図書館

この新しいものだけでなくscrapy私がこれまでに接したクローラー ライブラリもあります本質的な違いは分かりませんが、呼び方から以下のように分類できます。requests + Beautifulsoup or etreeselenium

  • scrapyクラス継承を実装することで、独自のメソッドを書き換えることでクローリング動作を実現します。長所: 高速、非常に高速; 短所: デバッグが難しく、作成が容易ではない; 該当する状況: 大規模なクローラー プロジェクト
  • selenium考え方自体は、ブラウザ自体を動かして動作させることになっており、さまざまなスクリプトレンダリングなどを読み込むため、遅い、非常に遅い、非常に遅いという欠点は非常に明白です。しかし、送信されるすべての情報が処理されるため、巨大なブラウザ構造を動員することで、selenium動的 Web ページを読み込むためのクリックと入力を含む人間のあらゆる操作を完了できます。該当する状況: Web ページの構造は変更可能であり、一部の情報を取得するには対話する必要があります。
  • requests + ()小規模な実験を書くときによく使われ、文法も比較的単純で、ロジックも整理しやすいです。上記の 2 つに比べると、requests静的な Web ページに適しており、柔軟性には劣りますseleniumが、それよりも高速で、逆に、それよりは遅いですが、scrapy書きやすいです。一般的に言えば、小さな実験を書くのに適したライブラリです。

特定の実験については、このページを参照してください。

この仕事

  • ルート論文: Alphafold による高精度タンパク質構造予測 近年、Nature に比較的大きな影響を与えた論文であり、全体的な核心は生物学的タンパク質の構造における深層学習の応用です。
  • タスクの説明: ルート ペーパーを原点として、数世代のドキュメントを上方向 (ルート ペーパーのドキュメントを参照) に検索し、数世代のドキュメントを下方向 (参照) に検索します。本質的にはツリー構造に似た形式ですが、ルートペーパーを起点としているため、同じレベルの文書が相互参照して閉ループを形成している場合があり、グラフ理論の定義からすると厳密なツリーではありません。しかし、結局のところ、それは工学であり、数学はそれほど厳密である必要はなく、アイデアを表現することが最も重要です。
  • Web サイトのクロール: Web Of Science のクロール防止機能は非常に優れており、さまざまなギャップがすぐに埋められるため、クロールに Web Of Science を選択することはお勧めできませんそうしていると、3月17日には利用可能だったポートが4月9日にブロックされてしまいました。他の Web サイトを探してみることをお勧めします。どうすればよいかわかりません。結局のところ、大規模な文献検索 Web ページはほんのわずかしかありません。自分で試してみるとわかります。

特定の状況

私がクロールしたいウェブページは、各記事に必ずしもウェブサイト上の文献や引用が列挙されているわけではないという特徴があります。運がよければ、あるいは有名人であれば、ウェブページ上に参考文献や引用元を掲載して閲覧することができます。わかりません 有名な小物には基本的にこのような扱いはありません。これは小規模な Web サイトの欠点でもあり、クロールは簡単ですが、メンテナンスは比較的不十分です。登山中に遭遇する問題のいくつかをここにまとめます。

  1. リクエストを送信したり検索したりするときは、必ず文章を使用してください。そうしないと、クロールの半分以上が瞬間的なけいれんによって引き起こされたり、ネットワーク速度のせいでページの更新が間に合わずにクラッシュが発生したりselenium泣く場所はwebdriverありません(get)(find_element)try...except
  2. driverXPath と CSS は、特定のデータを検索するときにサポートされますが、1 つ注意しなければならないのは、デザインや名前を付けるときに非常に悪いと思うことです。find_elementと の2 つの方法があり、と の違いとしてfind_elements理解できます前者は、検索要件を満たす最初に取得された要素を取得し、後者は、見つかったすべての要素を返します。区別するために 1 つだけを使用するのは実際には良くないので、デバッグを行うときは注意する必要があります。scrapy shellresponseextract_firstextract
  3. 重要!//*[@id="b_results"]/li[3]/div[1]/h2/aXpath で検索する場合、f12 で右クリック -> コピー -> XPath のコピーで Xpath が見つかると、通常、[3] や [1 in it . ]など、配列内の位置に似たものが表示されます。この方法でインデックスを作成することはお勧めしません。特に Web ページが動的で、異なる Web ページ間で構造に多かれ少なかれ違いがある場合、必要な要素を取得したり取得したりできない可能性が非常に高いためです。状況。したがって、最初のステップでこれらを削除し、class id再審査に使用する情報を選択することをお勧めします。

いくつかの方法

driverfind_element_by_xpath取得方法はや などいくつかありますfind_element_by_cssが、呼び出し時にこれらは使用しないでくださいと警告が出ます。これを使用しfind_element(by=,value=)By.XPATH呼び出して同じ関数を呼び出します。私の評価はパンツを脱いで屁をすることです。
ソースコードが提出されるまで、新しいアイデアについては後で書きます。

コード

私たちのグループの宿題は今週の火曜日に教えられます。しばらくの間は我慢して、宿題を提出した後にソース コードを共有してください\doge

おすすめ

転載: blog.csdn.net/Petersburg/article/details/124069580