urllib爬虫案例
爬取公众号文章中的图片。
第1步 确定公众号文章的地址,以微信公众号“Python小屋”里的一篇文章为例,文章标题为“报告PPT(163页):基于Python语言的课程群建设探讨与实践”,地址为:
https://mp.weixin.qq.com/s?__biz=MzI4MzM2MDgyMQ==&mid=2247486249&idx=1&sn=a37d079f541b194970428fb2fd7a1ed4&chksm=eb8aa073dcfd2965f2d48c5ae9341a7f8a1c2ae2c79a68c7d2476d8573c91e1de2e237c98534&scene=21#wechat_redirect
第2步 在浏览器(以Chrome为例)中打开该文章,然后单击鼠标右键,选择“查看网页源代码”,分析后发现,公众号文章中的图片链接格式为:
<p><img data-s="300,640" data-type="png" data-src="http://mmbiz.qpic.cn/mmbiz_png/xXrickrc6JTO9TThicnuGGR7DtzWtslaBlYS5QJ73u2WpzPW8KX8iaCdWcNYia5YjYpx89K78YwrDamtkxmUXuXJfA/0?wx_fmt=png" style="" class="" data-ratio="0.5580865603644647" data-w="878" /></p>
第3步 根据前面的分析,确定用来提取文章中图片链接的正则表达式:
pattern = 'data-type="png" data-src="(.+?)"'
第4步 编写并运行Python爬虫程序,代码如下:
from re import findall
from urllib.request import urlopen
url = 'https://mp.weixin.qq.com/s?__biz=MzI4MzM2MDgyMQ==&mid=2247486249&idx=1&sn=a37d079f541b194970428fb2fd7a1ed4&chksm=eb8aa073dcfd2965f2d48c5ae9341a7f8a1c2ae2c79a68c7d2476d8573c91e1de2e237c98534&scene=21#wechat_redirect'
with urlopen(url) as fp:
content = fp.read().decode()
pattern = 'data-type="png" data-src="(.+?)"'
#查找所有图片链接地址
result = findall(pattern, content)
#逐个读取图片数据,并写入本地文件
for index, item in enumerate(result):
with urlopen(str(item)) as fp:
with open(str(index)+'.png', 'wb') as fp1:
fp1.write(fp.read())