python新浪微博配図を捕まえる
2066 ワード
女神微博を見ていると、いつも女神微博のどの写真もきれいだと思っていたので、脚本で彼女の微博アルバムの微博の配図を全部捕まえたいと思っていました.
最初はマイクロブログの配図ページを開き、開発者ツールを開き、ページのソースコードを表示します.その後、私は直接右クリックしてホームページのソースコードを見て、ホームページのソースコードと開発者のツールの下で見たのが異なっていることを発見して、その中でブラウザがjsをロードしたはずで、開発者のツールはもっと多く見ました.爬虫類は移動端が優先なので、移動端のページを開いてみましたが、この中では同じです.しかし、モバイル版の写真は小さいですが、ページ版と比較することで、画像のアドレスに一定の関係があることがわかり、アドレスバーuuidと同じように、これはずっとやりやすいです.
分析が终わって、あとはコードが実现して、ルビーを学んだことがありますが、爬虫类はPythonを选んだほうがいいと闻いて、文法を见ながら、コードを书きました.次はソースコードです.ここで、テクノロジーの実装は主に3つの点に分けられます.
1.ログインします.ここで私は直接ブラウザのCookieでログインして、フォームを提出していないで、多くのコードを節約して、しかもフォームのログインをシミュレートして、しばらくして適用しないかもしれません.新浪はインタフェースを修正するからです.ここでは、User-Agentパラメータをバンドし、そうでなければ403.
2.移動版のピクチャーuuidを登ってホームページ版の大きいピクチャーの住所をつづって、その中の移動版の小さいピクチャーはlogoがなくて、大きいピクチャーのlogoは良い除去の方式を見つけていません.
3.画像をローカルにダウンロードします.
最初はマイクロブログの配図ページを開き、開発者ツールを開き、ページのソースコードを表示します.その後、私は直接右クリックしてホームページのソースコードを見て、ホームページのソースコードと開発者のツールの下で見たのが異なっていることを発見して、その中でブラウザがjsをロードしたはずで、開発者のツールはもっと多く見ました.爬虫類は移動端が優先なので、移動端のページを開いてみましたが、この中では同じです.しかし、モバイル版の写真は小さいですが、ページ版と比較することで、画像のアドレスに一定の関係があることがわかり、アドレスバーuuidと同じように、これはずっとやりやすいです.
分析が终わって、あとはコードが実现して、ルビーを学んだことがありますが、爬虫类はPythonを选んだほうがいいと闻いて、文法を见ながら、コードを书きました.次はソースコードです.ここで、テクノロジーの実装は主に3つの点に分けられます.
1.ログインします.ここで私は直接ブラウザのCookieでログインして、フォームを提出していないで、多くのコードを節約して、しかもフォームのログインをシミュレートして、しばらくして適用しないかもしれません.新浪はインタフェースを修正するからです.ここでは、User-Agentパラメータをバンドし、そうでなければ403.
2.移動版のピクチャーuuidを登ってホームページ版の大きいピクチャーの住所をつづって、その中の移動版の小さいピクチャーはlogoがなくて、大きいピクチャーのlogoは良い除去の方式を見つけていません.
3.画像をローカルにダウンロードします.
import urllib2 #2.7
import re
import requests
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6',
'cookie': ''} # Cookie chrome
count = 0
page = 27 # , , 1 , 。 , 。
while page > 0:
req = urllib2.Request('http://weibo.cn/album/albummblog/?rl=11&fuid=3261134763&page='+ str(page), headers=headers)
r = urllib2.urlopen(req)
data = r.read()
p = re.compile(r'src="http://ww(.).sinaimg.cn/square/(.{32}).jpg" alt=')
uuids = p.findall(data)
urls = []
for uuid in uuids:
url = 'http://ww' + uuid[0] + '.sinaimg.cn/mw1024/' + uuid[1] + '.jpg'
urls.append(url)
urls.reverse()
for url in urls:
response = requests.get(url)
if response.status_code == 200:
count += 1
f = open("/home/chen/mytest/crystal/"+ str(count) +".jpg", 'wb')
f.write(response.content)
f.close()
page -= 1
, ,Python ==