微信公众号文章保存到本地

网页版微信公众号的文章url是临时链接,如果你想过段时间再查看该篇文章就会发现链接过期,因此在爬取到文章后非常有必要把网页保存下来。
保存网页的时候,我们希望把图片、js、css等文件同时保存,使得html文件打开后与原网页一模一样。
但是我在保存微信公众号文章的时候发现,即使我已经成功下载了图片,但图片总是无法加载。仔细研究之后我发现是一个参数导致的:
crossorigin="anonymous
注解crossorigin:出于安全原因,浏览器禁止Ajax调用驻留在当前原点之外的资源。跨源资源共享(CORS)是由大多数浏览器实现的W3C规范,允许您灵活地指定什么样的跨域请求被授权,而不是使用一些不太安全和不太强大的策略,如IFRAME或JSONP。

以下为我随意找的一篇文章的img部分代码:

<img class="rich_pages" data-backh="290" data-backw="574" data-before-oversubscription-url="https://mmbiz.qlogo.cn/mmbiz_jpg/kuIKKC9tNkAO48fO1QHbYko66soMEOqadkTgicK7pxNcfoTM2Jv3KVcZR8FoJicfiaHN4HGRkDRUqCfa9w0AygrAA/0?wx_fmt=jpeg" data-croporisrc="https://mmbiz.qpic.cn/mmbiz_png/kuIKKC9tNkAO48fO1QHbYko66soMEOqaWutib4aKEVIE6E6JWb6mvKEVuxxKoPLApXK8A6tscLPpMRuSxfYwWUg/0?wx_fmt=png" data-cropx1="0" data-cropx2="1211" data-cropy1="0" data-cropy2="609.719512195122" data-ratio="0.5045417010734929" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/kuIKKC9tNkAO48fO1QHbYko66soMEOqadkTgicK7pxNcfoTM2Jv3KVcZR8FoJicfiaHN4HGRkDRUqCfa9w0AygrAA/640?wx_fmt=jpeg" data-type="jpeg" data-w="1211" style="width: 100%;height: auto;"  crossorigin="anonymous" />

值得注意的是,如果使用了crossorigin这个参数,必须跨域才可以成功加载,而微信文章的domain是mp.weixin.com,img的src是mmbiz,因此可以成功加载图片。如果保存图片在本地,那么就不构成跨域,自然无法加载图片。因此,只需删除这个属性,就可以让你的html加载保存好的图片啦!我使用的beautifulsoup对html网页进行解析的,删除属性只需要简单的一句:

soup = BeautifulSoup(html_cont, 'html.parser')
title = soup.title.string
del soup.img["crossorigin"]

OK,这么一来网页就可以成功保存啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值