Python 書籍・読書

【Python クローリング&スクレイピング】を読んで

投稿日:2017年10月11日 更新日:

紀伊国屋で買いました。
カバー外してます。

クローリングフレームワーク

  • lxml
  • Beautiful Soup
  • Scrapy

クローリング→データ収集
スクレイピング→収集したものからデータ抽出すること

3章

スクレイピングライブラリ

  • lxml
  • BeautifulSoup 内部でlxml使用
  • pyquery 内部でlxml使用

必ず使う

  • XPath
  • CSS

chrome開発者ツールでコピーできる。

lxml

  • lxml.etree
  • lxml.html 壊れたHTMLも扱える
  • lxml.objectfy
  • lxml.sax SAX形式

libxml2,libxsltをインストールしておく必要あり。

pythonからMYSQLはmysqlclient。

MongoDBはNoSQLの一種。

NoSQL RDBより書き込み速い。スクレイピング結果保存に向く。大量ページの同時クローリング・スクレイピングはDB書き込みがボトルネックになることがあるから。

相対→絶対URLの変換は標準のurllib.parse#urljoinで。

4章

セッションを持つクローラー

  • セッション Requestsで対応
  • Referer

Javascriptを解釈するクローラー

  • Seleniumを経由して
  • PhantomJSを使用する

考慮すること

  • 著作権
  • robots.txtは紳士協定
  • クロール先の負荷 同時接続数、クロール間隔
  • 連絡先の明示

繰り返し実行を前提とした設計

  • 更新されたデータだけ取得する

プロキシサーバーでキャッシュ

  • Squid
  • Polipo

クロール先の更新を検知

  • if文で
  • バリデーション Voluptuous
  • smtplibモジュールを使ってメール通知

5章

自然言語処理技術

  • 基本は形態素解析
  • OSSはMeCab

【curl】ファイルのダウンロードやアップロードを行う

pandas

  • 内部でNumPy使用
  • データ分析のためのデータ構造とツールである
  • シリーズ‥1次元のラベルつき配列(行に相当)
  • データフレーム‥2次元の表

matplotlib

  • グラフ描画ライブラリ

クローラー使ってやりたいこと

  • 世界中の国毎の情報まとめサイト
  • 検索エンジン(評価軸を選べる)‥yougleと名付ける!

何でもできそう。

Linuxの勉強にもなる。

AWSの勉強にもなる。

  • MQM
  • EC2

補足・IDE

  • PyCharmが有名・人気。
  • Eclipseのプラグイン PyDevも。

-Python, 書籍・読書

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

Python MySQLdb.cursor.executeのリストはタプル型である

executeのSELECTはタプル型 id value 1 hoge1 2 hoge2 3 hoge3 埋め込み変数1つでもタプル型   タプル型の1要素、1項目はこう書く (値,) カン …

no image

URLの構造

http://hoge.sample.com/category/diet?q=drink#ojousama スキーム scheme httpやhttpsのようにプロトコルを表す オーソリティ auth …

no image

PythonでWebサイトをクローリング・スクレイピングの実践

 各モジュールの公式ドキュメント モジュール バージョン ドキュメントURL 言語 Python 3 https://docs.python.jp/3/index.html 日本語 urllib ht …

no image

時間のない人程、本を読むべき。

本ほど時間短縮になるものはない。 編集者が読みやすく編集してくれてるんだから。 ブログやネットの記事は素人が書いたものであるから、正確性を担保する必要もないし、読みやすく配慮するには時間がかかるから、 …

no image

Python3 RotatingFileHandlerでログファイルサイズを抑えて世代管理

RotatingFileHandlerは何世代までローテーションできる? RotatingFileHandlerは何世代でもローテ―ションできるようです。 args=(“log/app.log”, ‘ …