この記事の内容は、Python クローラーを使用して貴重なブログ投稿を取得する方法です。必要な友達はこの記事の内容を参照してください。
著者 CDA データ アナリスト。
CSDN には素晴らしい技術ブログ記事がたくさんあります。それらをクロールしてローカル ディスクに保存できるので、将来読んだり学習したりするのに非常に便利です。この目的を達成するためのコード。
やりたいこと: ブログ記事を自動的に読み取り、タイトルを記録し、将来の学習の参考のためにお気に入りの記事をパソコンのハードドライブに保存します。
プロセスは大きく次のステップに分かれています:
1. クロールされたターゲット URL を検索します。 2. Web ページを分析し、 find own 保存したい情報。ここでは主にブログ記事の内容を保存します。
3. クロールされた情報を整理してローカル ディスクに保存します。
csdn Web ページを開きます:
http://blog.csdn.net/u013088062/article/list/1。
このブロガーは、「C++ Convolutional Neural Network」や機械学習に関するその他の記事について詳しく書いていることがわかります。
クローラー コードは、アイデアに従って 3 つのカテゴリ (クラス) に分割されます。「#」が付いた次の 3 つは、各クラスの始まりを示します (実際に実行して実装できるように、特定のコードが添付されています)。 「クラス」アプローチは Python のオブジェクト指向プログラミングであり、私たちが通常使用するプロセス指向プログラミングよりも便利な場合があります。プログラミングは大規模なプロジェクトでよく使用されます。初心者にとってオブジェクト指向プログラミングは習得するのが簡単ではありませんが、学習して慣れてくると、徐々にプロセス指向プログラミングからオブジェクト指向プログラミングに移行していきます。
特別な注意は、RePage クラスは主に正規表現を使用して Web ページから取得した情報を処理することです。正規表現は文字列スタイルを次のように設定します。
正規表現を使用して、クロールするコンテンツと一致させます。これは、Python やその他のソフトウェア ツールで実現できます。正規表現には多くのルールがあり、各ソフトウェアは同様の方法でそれらを使用します。正規表現をうまく活用することは、クローラーとテキスト マイニングの重要な部分です。
SaveText クラスは情報をローカルに保存します。効果は次のとおりです:
シンプルで効率的な Python でクローラー コードを作成します。この記事では、クローラーの最も基本的な使い方のみを説明します。興味のある方はコードをダウンロードしてご覧ください。
関連する Python コードを添付します:
<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 1</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#-*-coding:UTF-8-*-</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 2</span><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">import</span> re<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 3</span><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">import</span> urllib2<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 4</span><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">import</span> sys <br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 5</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#目的: ブログ記事を読み取り、タイトルを記録し、記事の内容を Htnl 形式で保存します </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 6</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"># バージョン: python2.7.13</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 7</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"># 機能: Web ページのコンテンツを読み取ります </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> 8</span><span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">class</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);"> gethtmlpage</span><span style="font-size:inherit;color:inherit;line-height:inherit;">()</span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">9#noteケース</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span>10<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">:</span><span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">11</span>12<span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">urllib2.request(self.strpapge)= req.add_header(</span> "user-agent"<span style="font-size:inherit;color:inherit;line-height:inherit;">、 </span>「Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML、Gecko など) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0」</span> )<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">16</span> 8<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"> cn.read() 。 </span>"utf-8"<br>) uPage<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"></span>22<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"> 23</span> urllib2.HTTPError、e:エラー:'<br> + e.reason<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"></span>27<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">を取得する式ご希望のコンテンツ</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">30</span><span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">class</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">RePage</span><span style="font-size:inherit;color:inherit;line-height:inherit;">()</span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">31</span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#正規表現はコンテンツを抽出し、リンクされたリストを返します </span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">32</span> <span style="font-size:inherit;color:inherit;line-height:inherit;"><span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">def</span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">GetReT ext </span><span style="font-size:inherit;color:inherit;line-height:inherit;">(自分、ページ、記録) </span>:</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">33</span> rePage = re.findall(recode,page,re.S)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">34</span> <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"></span><br>class<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> </span>SaveText<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span> ()<br>:<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"></span><span style="font-size:inherit;color:inherit;line-height:inherit;">37<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"> </span> <span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">デフォルト</span> <span style="font-size:inherit;color:inherit;line-height:inherit;">保存</span></span>(自分,テキスト,ティルテ)<br>:<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"></span><span style="font-size:inherit;color:inherit;line-height:inherit;">38<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"> t=</span>"ブログ\"<span style="font-size:inherit;line-height:inherit;color:rgb(239,239,143);">+ティルテ+</span> ".html"<span style="font-size:inherit;color:inherit;line-height:inherit;"></span></span>40<br> 43 <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"></span>IOError を除く、e :<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"></span>44<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">46</span> s = SaveText()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">47</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#ファイルエンコーディング</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">48</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#文字デコードを正しく行う</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">49</span> reload(sys)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">50</span> sys.setdefaultencoding( f-8"<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);"> ) </span>#システムのデフォルトのエンコーディングを取得します<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span><br>51<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> </span>#Webページを取得します<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span><br>52<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> page = GetHtmlPage(</span>"http://blog.csdn.net/u013088062/article/list/1"<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">)</span> <br> 53<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> htmlPage = page.GetPage()</span><br>54<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> </span>#コンテンツの抽出<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span><br>55<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> reServer = RePage()</span><br>56<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;"> reBlog = reServer.GetReText(htmlPage,</span>r'<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);"> .*?(s. +? http://blog.csdn.net/"<span class="link_title"> " '</span>[トップ] </span>'<span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">, </span>""<br>) <span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">#複雑な英語を削除するには置換関数を使用します </span><span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);"></span>62<br>tilte=tilte.replace(<span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">" rn"</span>,<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">""</span>).lstrip().rstrip()<span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);"><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">63</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#获取正文</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">64</span> htmlPage = GetHtmlPage(strPage)<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">65</span> htmlPageData = htmlPage.GetPage()<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">66</span> reBlogText = reServer.GetReText(htmlPageData,<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">'</span></span>
(.+?)(.+?)
')<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">67</span> <span style="font-size:inherit;line-height:inherit;color:rgb(127,159,127);">#保存文件</span><br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">68</span> <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">for</span> s1 <span style="font-size:inherit;line-height:inherit;color:rgb(227,206,171);">in</span> reBlogText:<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">69</span> s1=<span style="font-size:inherit;line-height:inherit;color:rgb(204,147,147);">'n'</span>+s1<br><span style="padding-right:20px;font-size:inherit;line-height:inherit;color:rgb(140,208,211);word-spacing:0px;">70</span> s.Save(s1,tilte)<br>
')<span style="font-size: 14px;"></span>67<br>
68 s1 のin
reBlogText:69 s1='n'+s1
相关推荐:
以上がPython クローラーを使用して貴重なブログ投稿を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。