在看公众号新闻的时候,总会有一些有用的PPT图片啥的想保存下来。
那么用python如何抓取来,简单介绍一下。
比如这个网址,https://mp.weixin.qq.com/s/-rj91sCpeaURAU5hWe_sjQ
里面有20多张PPT的截图。
首先,打开网页的源代码。可以看到,data-src后面的URL就是我们需要的图片的地址。
那么,我们可以通过正则表达式,把所有的图片链接找出来,存在List里面,然后循环下载它们。
Python代码如下。
import urllib.request
import re
import os
import urllib
#根据给定的网址来获取网页详细信息,得到的html就是网页的源代码
def getHtml(url):
page = urllib.request.urlopen(url)
html = page.read()
return html.decode('UTF-8')
def getImg(html):
reg = r'data-ratio="0.5625" data-s="300,640" data-src="(.+?)" data-type="jpeg"' #括号里面就是我们要取得的图片网址
imgre = re.compile(reg)
imglist = imgre.findall(html)#表示在整个网页中过滤出所有图片的地址,放在imglist中
x = 0
path = 'D:\\pyCode\\pic'
# 将图片保存到D:\\test文件夹中,如果没有test文件夹则创建
if not os.path.isdir(path):
os.makedirs(path)
paths = path+'\\' #保存在test路径下
for imgurl in imglist:
urllib.request.urlretrieve(imgurl,'{0}{1}.jpg'.format(paths,x)) #打开imglist中保存的图片网址,并下载图片保存在本地,format格式化字符串
x = x + 1
return imglist
html = getHtml("https://mp.weixin.qq.com/s/-rj91sCpeaURAU5hWe_sjQ")#获取该网址网页详细信息,得到的html就是网页的源代码
print (getImg(html)) #从网页源代码中分析并下载保存图片
正则表达式写的条件比较多,是为了能够精准匹配。
运行后,图片就会保存到你设定的path里面了。