Python2.7微信の公衆番号の文章のピクチャーをダウンロードします


微信公衆号の反爬虫類のアップグレードのため、このコードはもう使用できません.Python 2に移動してください.7微信の公衆番号の文章のピクチャーをダウンロードします(2)
微信公衆番号の文章の中のピクチャーはラベルのdata-src属性の中に存在するため、ネット上のコードの大多数は使うことができなくて、もう1つの表紙のピクチャーはjavascript変数の中に存在して、最後に思考して正規表現で解析します
Python2.7コードは次のとおりです.
# -*- coding: UTF-8 -*-
import os
import shutil
import httplib2
from bs4 import BeautifulSoup
import re
import binascii

h = httplib2.Http()
url = 'http://mp.weixin.qq.com/s?__biz=MjM5MDk0OTEyNg==&mid=213324685&idx=1&sn=186ee1433c04b23f6f123566e33e0b79&3rd=MzA3MDU4NTYzMw==&scene=6#rd'
resp, content = h.request(url)
print resp

#      javascript        
matchnickname = re.search(r'var\s*nickname\s*=\s*[\'\"](?P<nickname>\S*)[\'\"];', content)
matchappuin = re.search(r'var\s*appuin\s*=\s*[\'\"](?P<appuin>\S*)[\'\"];',content)
matchct = re.search(r'var\s*ct\s*=\s*[\'\"](?P<ct>\S*)[\'\"];', content)
matchuser_name = re.search(r'var\s*user_name\s*=\s*[\'\"](?P<user_name>\S*)[\'\"];', content)
matchmsg_cdn_url = re.search(r'var\s*msg_cdn_url\s*=\s*[\'\"](?P<msg_cdn_url>\S*)[\'\"];', content)

idx =  re.search(r'idx=(?P<idx>[0-9]+)',url).group('idx')
nickname = matchnickname.group('nickname')
appuin = matchappuin.group('appuin')
ct =  matchct.group('ct')
user_name =  matchuser_name.group('user_name')
msg_cdn_url = matchmsg_cdn_url.group('msg_cdn_url')

#      
dir='WeiXinGZH/'+nickname.decode('utf-8').encode('gb2312') + '/' + ct + '/' + idx + '/'
print '    :'+dir.decode('gb2312').encode('utf-8')
try:
    os.makedirs(dir)  #         
except:
    shutil.rmtree(dir)  #                 
    os.makedirs(dir)

#     
url = msg_cdn_url
print u'      :'+url
resp, contentface = h.request(url)
file_name = dir +'  '.decode('utf-8').encode('gb2312') + '.jpg'
open(file_name, 'wb').write(contentface)

#       
soup = BeautifulSoup(content, 'html.parser')
count = 0
for link in soup.find_all('img'):
    if None != link.get('data-src'):
        count = count + 1
        orurl = link.get('data-src')
        url = orurl.split('?')[0]  #     url,   url        
        print u'    :'+url
        resp, content = h.request(url)

        matchurlvalue = re.search(r'wx_fmt=(?P<wx_fmt>[^&]*)', orurl) #        gif,     jpg
        if None!= matchurlvalue:
            wx_fmt = matchurlvalue.group('wx_fmt') #     wx_fmt          
        else:
            wx_fmt = binascii.b2a_hex(content[0:4]) #    4     16     
        print wx_fmt
        phototype = {'jpeg': '.jpg', 'gif': '.gif', 'png': '.png', 'jpg': '.jpg', '47494638': '.gif', 'ffd8ffe0': '.jpg', 'ffd8ffe1': '.jpg', '89504e47': '.png'}  #        
        file_name = dir + 'Picture' + str(count) + phototype[wx_fmt]
        open(file_name, 'wb').write(content)

print '      '

後記20150902:
1.一部のファイルがダウンロードできない、およびフォーマットエラーを修正する
2.修復なしwx_fmtパラメータ時のファイルフォーマット認識エラー
3.なぜか分からないが、公衆番号の文章の画像が解析できない.正則を変えて半日も特殊文字を使わずに出られない.もし読者が解析したら、私に教えてください.URLは以下の通りです.http://mp.weixin.qq.com/s?__biz=MzA3NDMyNjMxMQ==&mid=200318070&idx=1&sn=83e96181cb58b8d06b6c39e9320d0b83&3rd=MzA3MDU4NTYzMw==&scene=6#rd 4.同じグループの文章のダウンロード画像が上書きされた場合を修復します