画像、htmlパーツ取得のheader情報
- 実際にブラウザ上でどのようにデータが取得されているのかを見てみる。ツールはwebインスペクタやfirebugでheader情報を参照する。以下の内容はsafari => webインスペクタ => ネットワーク => ヘッダを参照したもの。
- 画像
URL を要求:http://www.bijint.com/jp/tokei_images/0000.jpg
リクエストメソッド:GET
ステータスコード:200 OK
リクエストヘッダソースの表示
Referer:http://www.bijint.com/jp/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22
レスポンスヘッダソースの表示
Accept-Ranges:bytes
Connection:close
Content-Length:156987
Content-Type:image/jpeg
Date:Wed, 23 Nov 2011 16:00:00 GMT
Last-Modified:Mon, 03 Oct 2011 05:04:15 GMT
Server:Apache
URL を要求:http://www.bijint.com/jp/cache/0000.html
リクエストメソッド:GET
ステータスコード:200 OK
リクエストヘッダソースの表示
Referer:http://www.bijint.com/jp/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22
レスポンスヘッダソースの表示
Accept-Ranges:bytes
Connection:close
Content-Length:1831
Content-Type:text/html
Date:Wed, 23 Nov 2011 15:55:01 GMT
Server:Apache
現在時刻の美人時計htmlパーツを保存する
- 以下はpythonのサンプルコード。処理はべた書き。htmlパーツと画像をダウンロードして保存する処理。時間固定のURLでもスクリプト実行でお気に入りの美人を保存可能。
- 24時間分のデータが欲しい人は適当にfor文で0000.html 0000.jpgから回すように修正が必要。集中アクセスしないようにsleepを挟むような優しさが必要。
import os,urllib2,re
from datetime import *
def mkdir():
if os.path.isdir( 'image/%s' % ( datetime.now().strftime( '%Y%m%d' ) ) ) == False:
os.makedirs( 'image/%s' % ( datetime.now().strftime( '%Y%m%d' ) ) )
if os.path.isdir( 'html/%s' % ( datetime.now().strftime( '%Y%m%d' ) ) ) == False:
os.makedirs( 'html/%s' % ( datetime.now().strftime( '%Y%m%d' ) ) )
def setOpener():
ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22'
opener = urllib2.build_opener()
referer = 'http://www.bijint.com/jp/'
opener.addheaders = [( 'User-Agent', ua ),( 'Referer', referer )]
return opener
def getHtml():
opener = setOpener()
baseurl = 'http://www.bijint.com/jp/cache/'
url = '%s%s.html' % ( baseurl, datetime.now().strftime( '%H%M' ) )
contents = opener.open( url ).read()
r = re.compile( r'tokei_images' )
contents = r.sub( '../../image/%s' % ( datetime.now().strftime( '%Y%m%d' ) ) , contents )
contents = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body>' + contents + '</body></html>'
f = open( 'html/%s/%s.html' % ( datetime.now().strftime( '%Y%m%d' ), datetime.now().strftime( '%H%M' ) ), 'w' )
f.write( contents )
f.close
def getImage():
opener = setOpener()
baseurl = 'http://www.bijint.com/jp/tokei_images/'
url = '%s%s.jpg' % ( baseurl, datetime.now().strftime( '%H%M' ) )
contents = opener.open( url ).read()
f = open( 'image/%s/%s.jpg' % ( datetime.now().strftime( '%Y%m%d' ), datetime.now().strftime( '%H%M' ) ), 'w' )
f.write( contents )
f.close
def main():
mkdir()
getImage()
getHtml()
if __name__ == '__main__':
main()
保存したhtmlパーツのサンプル
- 以下をスクレイプの対象とする。
- 画像 : imgタグを抽出する。
<tr>
<td colspan="2" height="559px">
<div class="img_window">
<div class="coda-slider-wrapper">
<div class="coda-slider preload" id="coda-slider-1">
<div class="panel">
<div class="panel-wrapper">
<span id="coda-nav-right-1"><a href="#"><img height="517" src="/bijo/img2.php?m=if&i=20111124_4cacc2_pc_01.jpg"></a></span>
</div>
</div>
<div class="panel">
<div class="panel-wrapper">
<span id="coda-nav-right-1"><a href="#"><img height="517" src="/bijo/img2.php?m=if&i=20111124_4cacc2_pc_02.jpg"></a></span>
</div>
</div>
<div class="panel">
<div class="panel-wrapper">
<span id="coda-nav-right-1"><a href="#"><img height="517" src="/bijo/img2.php?m=if&i=20111124_4cacc2_pc_03.jpg"></a></span>
</div>
</div>
(略)
<span class="flow_text">
<ul id="profile_ticker">
<li>名前<strong>*****さん</strong></li>
<li>年齢<strong>19歳</strong></li>
<li>出身地<strong>埼玉県</strong></li>
<li>血液型<strong>A型</strong></li>
<li>星座<strong>うお座</strong></li>
<li>身長<strong>163cm</strong></li>
<li>ブログリンク<strong><a href="*****" target="_target">****</a></strong></li>
<li>職業<strong>大学生</strong></li>
<li>趣味/特技<strong>映画を観ること</strong></li>
<li>将来の夢<strong>エンターテイナー</strong></li>
<li>チャームポイント<strong>くちびる</strong></li>
<li>彼氏の有無<strong>無</strong></li>
<li>彼氏に求める条件(3つ)<strong>やさしい/背が高い/可愛らしい</strong></li>
<li>男性に対して何フェチ?<strong>後ろから見た二の腕</strong></li>
<li>理想の告白のされ方は?<strong>面と向かってなら何でもOK</strong></li>
<li>結婚したい有名人<strong>佐藤健</strong></li>
<li>憧れの女性有名人<strong>吉高由里子</strong></li>
<li>最近行きつけの美味しいお店<strong></strong></li>
<li>一言コメント<strong>現役女子大生です。ブログ遊びにきてくださ〜い!</strong></li>
<li>好きなファッションブランドはなんですか?<strong>TOP SHOP</strong></li>
<li>使ってる携帯はiPhone?アンドロイド?ガラケー?<strong>iPhone3Gs</strong></li>
<li>よく使うアプリはなんですか?<strong>写真加工アプリ</strong></li>
<li>ファッションのコーディネートで気を使うポイントは?<strong>足を出す!</strong></li>
<li>冬にチャレンジしてみたいあなたのコーディネートはなんですか?<strong>モコモコのファーコートorファーアイテムが欲しいです♡</strong></li>
</ul>
</span>
画像付きhtmlを保存
import os,urllib2,re
from datetime import *
def mkdir():
if os.path.isdir( 'html/%s' % ( datetime.now().strftime( '%Y%m%d' ) ) ) == False:
os.makedirs( 'html/%s' % ( datetime.now().strftime( '%Y%m%d' ) ) )
def setOpener():
ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/534.51.22'
opener = urllib2.build_opener()
referer = 'http://www.bijogoyomi.com/'
opener.addheaders = [( 'User-Agent', ua ),( 'Referer', referer )]
return opener
def getHtml():
opener = setOpener()
baseurl = 'http://www.bijogoyomi.com/bijo3/index.php/'
url = '%s%s' % ( baseurl, datetime.now().strftime( '%Y/%m/%d' ) )
contents = opener.open( url ).read()
return contents
def getPersonData( html ):
if re.compile( r'(<span class="flow_text">(.|\n)*?</span>)' ).search( html ) is None:
exit()
return re.compile( r'(<span class="flow_text">(.|\n)*?</span>)' ).search( html ).group()
def getImages( html ):
if re.compile( r'<span id="coda-nav-right-1">.*?<img.*?src="(.*?)"' ).findall( html ) is None:
exit()
return re.compile( r'<span id="coda-nav-right-1">.*?<img.*?src="(.*?)"' ).findall( html )
def saveHtml( images,pdata ):
baseurl = 'http://www.bijogoyomi.com'
count = 0
contents = '<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8" /></head><body>'
contents += pdata
for i in images:
contents += '<img src="' + baseurl + i + '" width="400" height="250" />'
if count % 3 == 2:
contents += '<br/>'
count = count + 1
contents += '</body></html>'
f = open( 'html/%s/bijogoyomi.html' % ( datetime.now().strftime( '%Y%m%d' ) ), 'w' )
f.write( contents )
f.close
def main():
mkdir()
html = getHtml()
pdata = getPersonData( html )
images = getImages( html )
saveHtml( images,pdata )
if __name__ == '__main__':
main()
保存したhtmlサンプル