シコウノキロクスマートフォン用の表示で見るシコウノキロクアラサー男が自由を手に入れるまでの思考と試行の記録。PythonによるWebスクレイピングについて2017-01-14PythonによるWebスクレイピングについてPython・Web現在作成(絶賛どハマり)中のwebスクレピングサービス、そのコードについて簡単にまとめていきます。本来は2016年以内に公開しました、ドヤァ!という予定だったのですが、公開直前のサーバー構築につまづいてハマること3週間、その間にVPSを初期化すること十数回。本当にLinuxは奥が深いです。shikouno.hatenablog.comyumyum...と何回も叩いたのでそろそろ日本語を打ちたい・未来の自分が成長を実感するためのメモ、以上の目的のために記事を書きます。そのため、行き当たりばったりの欠陥コードをそのまま掲載しますので要注意です。参考にされることはないと思いますが、念のため。今回作った目的とコードを示して簡単にコメントしていきます。今回作ったものについてハウツー食材(仮):検索した食材のレシピを引用して、写真と必要食材を一覧表示するものです。買い物に行って目新しい食材を見つけても調理法がわからずに購入しないことがかなりあります。レシピサイトで検索して一件ずつ見ていけばいいのですがそれは少し面倒なので、新しいもの好きな私は歯がゆい思いをしておりました。いう訳で、webスクレイピング・公開の勉強も兼ねてサクッと年内に作ろうと12月頃から取り組みました。コード以前の記事と基本的にやっていることはほぼ変わりません。shikouno.hatenablog.comgetメソッドを実行することで、検索した食材に関するhtmlが生成されます。次の三つのメソッドでレシピサイトから情報の成形を行なっています。各処理のタグは引用元に使わせてもらった三つのサイト〜オレンジページ・レシピブログ・楽天レシピ〜に合わせています。url引用元のレシピサイトで食材検索して一覧を表示、各レシピのURLを抽出する。html抽出したURLから必要な情報を抽出する。次の処理に渡せるようにして、各メソッドの後ろ2行にてhtmlを生成(後述)しています。self.make_htmltable(content)本当は各サイトごとのメソッドを作成するのではなく、汎用的なメソッドを一つ作成して引数で使い分けたかったのですが断念しました。かける方法があるのでしょか。それとも、スクレイピングする場合って各サイトごとにタグの指定とか設定しているんですかね。あとは、上記で抽出した情報を元にhtmlを生成していきます。最初の二つのメソッドは各サイトのコンテンツを作成する際に実行しており、最後のメソッドは本記事の一番最初のgetメソッドにて実行します。self.rakuten_content))Bootstrapのグリッドを使ってみたかったため、下記のサイトを参考にさせてもらいました。終わりに以前と同じことをやっておりコード自体も短いため、作成はサクッとできました。htmlの生成までに30秒程かかるという致命的な欠陥が存在しています。そのため、Djangoに放り込んでherokuで公開してみたのですが、timeout制限により残念な結果になりました。設定いじれるVPSなら公開できるだろう!から、サーバー構築どハマりにつながります。Linuxの勉強になってるので結果的には良かったですけどね!とはいえ、このままLinuxばかり触っていると迷宮入りしそうなので、pythonのコード自体を高速化したいですね。socket_recvというのが律速で未知の領域っぽいので、ぼちぼち付き合っていきます。あとは、スクレイピングのコードばかり書いていたので他の勉強もしていきたいです。pythonを使ったものに限らず、Linux・綺麗なコードの書き方とか。6章|オブジェクトとクラスPythonの入門書として各所でオススメされている入門Python3。s...2017-07-23Python|サイトの画像を一括ダウンロードサイトの画像を一括でダウンロードする必要がありましたので、P...2017-07-09DjangoのImageField・DBによる画像保存についてDjangoのモデルシステム、便利ですよね。(3)スポンサードリンクはてなブログをはじめよう!shikounoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。