作者:Gutierrez地址:http://www.jianshu.com/p/04459ab36b56
私にはIT業界に入ろうとしている彼女がいますが、彼女は大学時代にC言語を勉強したこともあります。彼女が周りのプログラマーとのコミュニケーションに適応できないのではないかと心配しています。
機会あるごとにプログラミングの楽しさやテクノロジーの魅力を伝えようと努めましたが、成果はわずかでした。そこで今回は、娘にクローラーを教え、プログラミングの達成感を味わい、便利なツールを使いこなすためのチュートリアルを根気よく書いていこうと思います。
わかりました、始める前に、この時点で彼女の感情が安定していることを確認する必要があります。これには少し忍耐が必要です。彼女が顔をしかめたら、すぐにノートパソコンをしまって、おいしいものを食べに連れて行ってください。調和が最も重要です。
まず第一に、コンピューターが必要です。幸いなことに、女の子は Mac を持っているので、多くの手間が省けます。クローラーに最適なプログラミング言語は Python です。Mac にはすでに Python が組み込まれていますが、クローラーに必要なライブラリであるリクエストを追加する必要があります。
电脑是个笨蛋,只能听懂计算机语言,所以我们需要把我们的想法用计算机语言告诉他,让他乖乖的执行。库是大神们已经写好的程序,我们导入库,就可以利用他们的成果了。
ファイルをダウンロードします
https://bootstrap.pypa.io/get-pip.py
ルート ディレクトリに保存し (Finder を開くだけです)、ターミナルを見つけて開き、次のコードを入力する必要はありません。つまり、これが完了したら、必要な環境が設定されました。私は心の中ですべてがうまくいくようにと静かに祈りました。
python get-pip.pypip install requests
クロールの前に、クローラーが必要な場所に行く必要があります。彼女も私も Curiosity Daily が好きなので、Curiosity Daily から写真をダウンロードしましょう。
Chrome で目的のクローラーの URL を開き、Web ページの空白部分を右クリックし、ポップアップ メニューで [要素の検査] を選択すると、Web ページのソース コードが表示されます。ポップアップの下部バー、画像 アドレスはこれらの厄介なコードの中に隠されています。ただし、幸いなことに、下部バーの左上隅にある虫眼鏡をクリックして、Web ページ上の画像を選択すると、コード内の画像アドレスをすぐに見つけることができます。
さらにいくつかの写真を選択し、よく見ると、パターンと形式が同じであることがわかります。
img class="pic" src="/system/articles/articleshows/18675/relatedMediumPc2/18675.jpg?1449539003" alt="可口可乐弧线瓶诞生 100 年了,它是如何改变了我们所处的世界? | 好奇心商业史"
これを見て、クローラーを要約する必要があります。私たちが閲覧する Web ページのほとんどは、一種のエンコーディング (HTML) を使用して、テキスト、画像、ビデオ、その他のコンテンツを一連の複雑なコードにプログラムします。これらのコードは、ブラウザーによって解釈されて、他のページに表示されます。つまり、ブラウザーで見るものはすべて、Web ページのソース コードに含まれています。クローラーは、Web ページのソース コードを分析して情報を取得するプログラムです。ここでは、クローラーを使用して Web ページのソース コード内の画像を検索し、ローカルにダウンロードします。
コードを書く前に、コード エディターを準備する必要があります。ここでは Microsoft の良心傑作 VS コードを推奨し、ダウンロード アドレスを提供します。
https://www.visualstudio.com
VScode を開き、前に説明したルート ディレクトリに保存し、picdownloader.py という名前で保存してから、コードの入力を開始します。
#-*-coding:utf8-*-import reimport requestshtml = requests.get('http://www.qdaily.com/categories/17').textpic_url = re.findall('"pic" src="(.*?)"',html,re.S)i = 0 for each in pic_url: url = 'http://www.qdaily.com' + each print('now downloading:' + url) pic = requests.get(url) fp = open('pic//' + str(i) + '.jpg','wb') fp.write(pic.content) fp.close()i += 1
一つずつお話しましょう。
#-*-coding:utf8-*-的意思上字符编码是utf-8。妹子只需要知道写上这条总没错,不写有可能出错
re インポート リクエストのインポートとは、re ライブラリと request ライブラリをインポートし、次にこれら 2 つのライブラリのプログラムを使用することをコンピュータに指示することを意味します。
次のコードの目的は、Web ページのソース コードを取得して HTML に保存することです。もちろん、別の Web ページに変更することもできます。
html = requests.get('http://www.qdaily.com/categories/17').text
次のコードは、上記のソース コードからすべての画像アドレスを検索し、pic_url に保存するコア コードです。 「"pic" src="(.*?)"」は、コード内で、探している画像アドレスの前に「pic" src="" があり、その後に「」が続くことを意味します。 html は上記で取得したソースコードです。
pic_url = re.findall('"pic" src="(.*?)"',html,re.S)
最後に、取得した画像アドレスに従って、指定したフォルダーに画像をダウンロードするだけです。コードは少し複雑ですが、心配しないでください。クローラーの中心的なタスクは完了したため、次のコードは重要ではなくなりました。以下のコードをコピーしてコードの最後に追加することもできます。コードの意味については説明しますが、ここで理解できなくても問題ありません。
pic_url: のそれぞれについて、for ステートメントは pic_url をループすることを意味します。 pic_url にはすべての画像アドレスが格納されているため、次のコードは複数回実行され、毎回 1 つの画像が処理されます。以下のコード内のそれぞれは、各実行のイメージ アドレスを表します。
url = ' http://www.qdaily.com ' + each 取得したアドレスは不完全なので、Curiosity Daily のホームページとマージする必要があります。Python で 2 つの文字列をマージするには、必要なのは次のとおりです。 +それだけです。
print('nowdownload:' + url) の機能は、括弧内の内容をターミナルに出力し、実行中にターミナル ウィンドウを観察することです。それ。
pic =requests.get(url) の機能は、URL 画像アドレスを pic にダウンロードすることです。
最後に、ダウンロードした写真画像コンテンツをファイルに書き込み、pic フォルダーに保存します。
fp = open('pic//' + str(i) + '.jpg','wb')fp.write(pic.content)fp.close()
完全なコードをダウンロードするにはここをクリックしてください
http://pan.baidu.com/s/1i3LPgTB
ルート ディレクトリに新しいフォルダーを作成して、ファイルを保存することを忘れないでください。写真、ここにあるもの フォルダーは pic です。ターミナルを開いて次のコードを記述し、Enter
を押します。python picdownloader.py
到这里,我们完成图片爬虫程序,是不是很简单。女王,我已尽力,如果你没懂,看来还得我手把手教,约么?