Python爬虫類を編纂して暴走漫画の上でgifピクチャーの実例をつかんで分かち合います。
ここで紹介する爬虫類は暴走漫画のGIF趣味図をつかむので、オフラインで見やすいです。爬虫用はpython 3.3が開発したもので、主にurllib、request、Beautiful Soupモジュールを使用しています。
urllibモジュールは、マルチ次元ネットワークからデータを取得するための上位インターフェースを提供しています。私たちはurlopen()を使ってURLを開くと、Python内に建てられたopen()を使ってファイルを開くのと同じです。しかし、前者はパラメータとしてURLを受信し、オープンしたファイルストリームをseek操作できない(ベース層の観点から見ると、実際に操作しているのはsocketなので、当然seek操作はできない)。後者はローカルファイル名を受信する。
PythonのBeautiful Soupモジュールは、HTMLとXMLの解析が可能です。
まず、ウェブページの爬虫類を書いて、つまりウェブページのhtmlソースコードなどの内容をつかんで、それから分析して、相応する内容を抽出します。
このような分析)の内容の仕事は、普通の正規表現reモジュールだけで少しずつマッチすれば、内容が簡単なウェブページの分析には、まだ十分です。
しかし、仕事量が多く、内容が複雑であることを解析するために、REモジュールを使うと、実現できないことや実現しにくいことが分かります。
beautiful soupモジュールを使って、分析を実现します。)ソースの仕事をすれば、物事がこんなに简単になり、分析の効率が大幅に向上しました。
注:Beautiful Soupは第三者ライブラリです。私が使っているのはbs 4です。urllib 2はpython 3でurllib.requestに割り当てられていますが、文書の原文は以下の通りです。
Note:The urllib 2 module has been split acros several modules in Python 3 named urllib.requestand urllib.error.
爬虫源コードは以下の通りです。
urllibモジュールは、マルチ次元ネットワークからデータを取得するための上位インターフェースを提供しています。私たちはurlopen()を使ってURLを開くと、Python内に建てられたopen()を使ってファイルを開くのと同じです。しかし、前者はパラメータとしてURLを受信し、オープンしたファイルストリームをseek操作できない(ベース層の観点から見ると、実際に操作しているのはsocketなので、当然seek操作はできない)。後者はローカルファイル名を受信する。
PythonのBeautiful Soupモジュールは、HTMLとXMLの解析が可能です。
まず、ウェブページの爬虫類を書いて、つまりウェブページのhtmlソースコードなどの内容をつかんで、それから分析して、相応する内容を抽出します。
このような分析)の内容の仕事は、普通の正規表現reモジュールだけで少しずつマッチすれば、内容が簡単なウェブページの分析には、まだ十分です。
しかし、仕事量が多く、内容が複雑であることを解析するために、REモジュールを使うと、実現できないことや実現しにくいことが分かります。
beautiful soupモジュールを使って、分析を実现します。)ソースの仕事をすれば、物事がこんなに简単になり、分析の効率が大幅に向上しました。
注:Beautiful Soupは第三者ライブラリです。私が使っているのはbs 4です。urllib 2はpython 3でurllib.requestに割り当てられていますが、文書の原文は以下の通りです。
Note:The urllib 2 module has been split acros several modules in Python 3 named urllib.requestand urllib.error.
爬虫源コードは以下の通りです。
# -*- coding: utf-8 -*-
import urllib.request
import bs4,os
page_sum = 1 #
path = os.getcwd()
path = os.path.join(path,' GIF')
if not os.path.exists(path):
os.mkdir(path) #
url = "http://baozoumanhua.com/gif/year" #url
headers = { #
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'
' Chrome/32.0.1700.76 Safari/537.36'
}
for count in range(page_sum):
req = urllib.request.Request(
url = url+str(count+1),
headers = headers
)
print(req.full_url)
content = urllib.request.urlopen(req).read()
soup = bs4.BeautifulSoup(content) # BeautifulSoup
img_content = soup.findAll('img',attrs={'style':'width:460px'})
url_list = [img['src'] for img in img_content] # url
title_list = [img['alt'] for img in img_content] #
for i in range(url_list.__len__()) :
imgurl = url_list[i]
filename = path + os.sep +title_list[i] + ".gif"
print(filename+":"+imgurl) #
urllib.request.urlretrieve(imgurl,filename) #
15行目でダウンロードページ数を修正して、このファイルをbaozougif.pyとして保存します。コマンドpython baozougf.pyを使って実行したら、同じディレクトリの下で「暴走GIF」のフォルダが生成されます。すべての画像は自動的にこのディレクトリにダウンロードされます。