花瓣网は毎回20枚を取ります
3948 ワード
今は夜11時40分です.今日は初日に爬虫類の知識を勉強します.初心者ですが、Pythonの文法に大体触れているだけなので、今日は昼と夜に学校に行くのが疲れています.最初の問題はPythonスクリプトの実行で構文エラーが発生したことです:IndentationError:unindent does not match any outer indentation levelそれからずっと原因カードを探してここで何時間も最後に普段の私の個人的な習慣は改行してから3つのスペースを叩いてSublimeの改行習慣はTabキーが何気なく発見したこれは自分で模索して勉強した最大の可能性があります人の一瞬の出来事を知るには、私たちは長い時間がかかります.2つ目はif name=="main":の使い方は1つのモジュールとして使用するときにこの文ブロックを引用しないことです.3つ目はマルチスレッドthreadingの使用です.myThread(threading.Thread)最後はJSONのloadsとdumpsの使用です.1つは文字列を辞書に変換し、もう1つは辞書を文字列に変換します.
#/usr/bin/env python
#coding:utf-8
import json
import urllib.request
import threading
# JSON ,urllib threading
#
class myThread(threading.Thread):
def __init__(self,imgurl,filename):
threading.Thread.__init__(self)
self.imgurl = imgurl
self.filename = filename
def run(self):
print ('downloading: ' + self.imgurl)
downfile(self.imgurl,self.filename)
#
def downfile(imgurl , filename):
img_req = urllib.request.Request(imgurl)
opener = urllib.request.build_opener()
img_resp = opener.open(img_req)
try:
out = open(filename,'wb')
out.write(img_resp.read())
out.flush()
out.close()
except:
print('error')
if __name__ == "__main__":
surl = 'http://huaban.com/pins/1821121555/?jlb0k0ki'
#
hb = urllib.request.Request(surl)
# XHLHttprequest
hb.add_header('X-Requested-With','XMLHttpRequest' )
# win10 chrome
hb.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0')
html = urllib.request.urlopen(hb).read()
obj = json.loads( html )
#print (obj['pin']['board']['pins'])
imgs = obj['pin']['board']['pins']
#
preurl = 'http://img.hb.aicdn.com/'
for img in imgs :
imgurl = preurl + img['file']['key']
#print (imgurl)
myThread(imgurl,img['file']['key'] + '.jpg').start()