wtfx.tk 是一个分享免费 ss 账号的网站,但是他分享的只是二维码。而最新版 ss 不能扫描网页上的二维码,所以要把图片下载下来,这样是十分费事的。所以我专门写了一个爬虫,用于将该网站上的二维码保存到本地文件夹。
该爬虫运行会删除相对路径下的 pic 文件夹,并新建一个 pic 文件夹用于存储二维码。请慎用。
如果相对路径下没有 pic 文件夹,爬虫会进行提示,按下 Enter 即可继续。
源代码如下:
1 #coding:utf-8 2 __Author__ = ‘liuqi‘ 3 import os 4 import re 5 import sys 6 import copy 7 import shutil 8 import urllib 9 import chardet 10 11 def getHtml(url): 12 page = urllib.urlopen(url) 13 html = page.read() 14 return html 15 16 def getPngAddr(html): 17 png = r"pic/\w+[-]?\w+[-]?\w*\.png" 18 tmp = re.compile(png) 19 png = re.findall(tmp, html) 20 # print png 21 for i in range(len(png)): 22 png[i] = url + png[i] 23 24 return png 25 26 def getPngName(pngAddr): 27 pngName = copy.deepcopy(pngAddr) 28 29 pngT = r‘pic/(\w+[-]?\w+[-]?\w*)\.‘ 30 t = re.compile(pngT) 31 for i in range(len(pngAddr)): 32 pngName[i] = re.findall(t, pngAddr[i])[0] 33 34 return pngName 35 36 def getPng(Addr, Name): 37 urllib.urlretrieve(Addr, "pic\\%s.png" % Name) 38 39 40 if __name__ == "__main__": 41 url = ‘http://wtfx.tk/‘ 42 43 html = getHtml(url) 44 45 pngAddr = getPngAddr(html) 46 # print pngAddr 47 pngName = getPngName(pngAddr) 48 49 # os.rmdir(‘pic‘) 50 try: 51 shutil.rmtree(‘pic‘) 52 except WindowsError, e: 53 print "couldn‘t rm folder: no such folder!" 54 raw_input("please press Enter to continue > ") 55 56 os.mkdir(‘pic‘) 57 58 for i in range(len(pngAddr)): 59 getPng(pngAddr[i], pngName[i]) 60 61 # html_code = chardet.detect(html)[‘encoding‘] 62 # sys_code = sys.getfilesystemencoding() 63 # print "html is encoding by: ", html_code 64 # print "system is encoding by: ", sys_code 65 # 正常输出网页 66 # print html.decode(html_code).encode(sys_code)
配置条件:确保你的电脑上安装了python2。
使用方法:新建一个.py文件,将上述代码复制,保存,双击运行即可。
时间: 2024-10-31 15:05:39