Pyppeteerエントリと使用アーティファクトのpython爬虫類

この記事では、紙は、サンプルコード、習得したり、作業するために私たちのすべてのための学習の一定の基準値によって、非常に詳細に説明し、Pyppeteerエントリと使用アーティファクトのpython爬虫類を記述困っている友達はを参照することができます
はじめに

リフトセレンは、おそらく誰もが、よく知られたWeb自動テストフレームワークとして、主流のブラウザの様々なセレンサポートに精通している、私たちはしばしば使用するクローラツールを使用し、機能豊富なAPIインターフェイスを提供します。しかし、セレンの欠点は、このような遅すぎる設定のバージョンを要求用として、また、非常に明白である、多くの場合、対応するドライブを更新するための最も厄介です。

今日は比較的単純なサポートがブラウザ、あなたに別のWeb自動テストツールPyppeteerを与えたが、作業効率のインストールと設定のしやすさの面ではるかに優れたセレン以外でなければなりません。

01.Pyppeteerプロフィール

Pyppeteerレッツは、私は人形遣いの話を紹介する前に、人形遣いは、Googleは、Javascriptコードによって操作Chromeブラウザがデータをクロール完了するために、主にChromeブラウザを操作するためのAPI使用するツールの開発に基づいてのNode.jsを生産していますウェブは、テスト手順および他のタスクを自動化。

Pyppeteerは、実際にPythonのバージョン人形遣い、以下の二つの特徴Pyppeteer、クロムブラウザとasyncio枠組みの下で簡単です。

1).chromium

クロムは、スタンドアロンのブラウザで、Googleは独自のブラウザGoogle Chromeの、オープン計画を開発するために、クロム、クロムの実験版の同等は、通常は、すべて、クロムよりも安定性が低いが、より機能豊富なあり、かつ迅速に更新されます数時間ごとに新しい開発リリースがあります。

PyppeteerのWebベースの自動化クロムが原因で、クロムのある特性を達成するために、Pyppeteerインストール構成この点については、我々は、詳細は後でますが、非常に簡単です。

2).asyncio

asyncioは直接内蔵の非同期IOのサポート標準ライブラリのバージョン3.4の導入以来、非同期Pythonのコルーチンライブラリであり、最も野心的なPythonのライブラリーの公式ウェブサイトであることを主張するには、非常に詳細な紹介があります。ここに画像を挿入説明
02.インストールと使用を

1)。インストールのミニマリスト

使用ピップは、クロムブラウザとして、あなただけ自動的pyppeteerのデフォルトの位置に対応するクロムブラウザの最新バージョンをダウンロードしますpyppeteer-installコマンドを必要とし、インストールpyppeteerライブラリを完了するpyppeteer順をインストールします。

あなたが実行しない場合、コマンドが自動的にダウンロードされますpyppeteerをインストールし、初めてpyppeteerクロムブラウザの使用をインストールし、効果は同じです。リンクドライバの設定を排除セレンよりも全体的に、pyppeteer。

もちろん、何らかの理由で、またその後、あなたは手動でインストールを検討することができ、クロム自動インストールが正常に完了することができません発生する可能性があります。第一には、以下のURLから自分のシステムの対応バージョンを見つけ、ダウンロードクロムアーカイブ。

'Linuxの': 'https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/575458/chrome-linux.zip'
'MAC':「https://storage.googleapis.com/chromium-browser-スナップショット/マック/ 575 458 / chrome-mac.zip '
' Win32の':' https://storage.googleapis.com/chromium-browser-snapshots/Win/575458/chrome-win32.zip '
' Win64の':' HTTPS: //storage.googleapis.com/chromium-browser-snapshots/Win_x64/575458/chrome-win32.zipは、「
デフォルトのディレクトリのWindowsシステムの下で、指定したディレクトリのpyppeteerに圧縮解凍しました。他のシステムでは、デフォルトのディレクトリは、次の図の描写を参照してもよい:ここに画像を挿入説明
2)。

インストールが完了したら、それ効果を試してみてください。一緒に主な機能、ブラウザオブジェクトまでの最初のセットには、次のコードを見て、その後、新しいタブを開き、アクセスBaiduのホーム・ページ、現在のページのスクリーンショットをし、「example.png」として保存し、そして最終的に近いブラウザ。前述また、pyppeteerを建てasyncioベースなので、使用時の非同期/のawait構造への使用を必要としています。ここに画像を挿入説明
Pyppeteerのヘッドレスブラウザは、あなたがしたい場合は、ブラウザが表示され、あなたが発射機能の「ヘッドレス= False」に、プログラムが終了するパラメータを設定する必要があるため、デフォルトで使用され、実行されないポップアップブラウザを見つける上記のコードを実行します同じディレクトリに後が傍受されるページの画像:ここに画像を挿入説明
基金をクロール03.非同期戦闘

我们前面一直在说Pyppeteer是一款非常高效的web自动化测试工具,其本质原因是由于Pyppeteer是基于asyncio构建的,它的所有属性和方法几乎都是coroutine对象,因此在构建异步程序的时候非常方便,天生就支持异步运行。

下面就来对比顺序执行和异步运行的效率究竟如何:

1).基金爬取

我们把天天基金网中的开放式基金净值数据爬取作为本次的实验任务,下面这张图是一支基金的历史净值数据,这个页面是js加载的,没办法通过requests直接获取内容信息,因此可以考虑使用模拟浏览器操作的方式进行数据抓取。(事实上基金净值数据的获取是有API接口的,本次任务只是为了演示,不具备实用价值)ここに画像を挿入説明
为了使效果更加明显,我们此次爬取基金列表页(下图)前50支基金的近20个交易日的净值数据。ここに画像を挿入説明
2).顺序执行

程序构建的基本思路是新建一个browser浏览器和一个页面page,依次访问每个基金的净值数据页面并爬取数据。核心代码如下:ここに画像を挿入説明
代码中的get_data()函数用于净值数据页面解析和数据的转化,get_all_codes()函数用于获取全部开放式基金的基金代码(共6000余个)。虽然程序也使用了async/await的结构,但是对多个基金的净值数据获取都是在callurl_and_getdata()函数中顺序执行的,之所以这样写是因为pyppeteer中的方法都是coroutine对象,必须以这种形式构建程序。

为了排除打开浏览器的耗时干扰,我们仅统计访问页面和数据抓取的用时,其结果为:12.08秒。

3).异步执行

ここでは、主にタスクオブジェクトの非同期操作fundlistに変換循環に、パフォーマンスの機能が同じで、プログラムの変換を見てください。コアコードは以下の通りである:ここに画像を挿入説明
6回に比べて速く注文執行2.18秒:ブラウザが開いた後、それを使用して実行されたときに時間のかかる統計的範囲は、まだ数えます。必要なクロールワークロードが比較的大きい場合、実行の順序は、10時間を要し、想像し、その後、非同期実行は、唯一の最適化の効果は非常に明白なように記述することができ、以下の2時間かかることがあります。

私たちは、高齢者が学習しているかを確認するためにサイトを学ぶのpythonをお勧めします!基本的なPythonスクリプト、爬虫類、ジャンゴ、データマイニングから

そして、他のプログラミング技術だけでなく、戦闘にゼロベースのpython小さなパートナーを学ぶすべての愛に与えられたデータ項目を、並べ替え!毎日、ベテラン

Pythonの方法ご参加の上、学習と細部への注意を払う必要性へのいくつかを共有する]をクリックして、技術のタイミングを説明するための学習者の集まりPYTHON

公開された27元の記事 ウォン称賛22 ビュー20000 +

おすすめ

転載: blog.csdn.net/haoxun05/article/details/104383049