背景:

在学习了简单爬虫的编写之后,我试图通过编写爬取公众号图片(表情包)来丰富我的聊天技能,亦不致于败给各种熊猫头。

在学习了requests库之后,就能够很轻松地爬取静态页面的信息,把网页对象获取到本地。但是此时如何把复杂的网页信息解析出来,便需要使用到正则表达式或者这次分享的BeautifulSoup库。BeautifulSoup是非常好用的第三方解析器,具体介绍和使用参考官方说明文档

调用方法:

from bs4 import BeautifulSoup

算法思路

用到的主要第三方库有Re库、Requests库和BeautifulSoup库。

此后我编写了getHTMLText()函数获得指定url的html信息,编写了getimgURL()函数得到某一篇文章里的所有图片链接,再编写download(adlist)函数新建或打开文件夹下载并保存图片,最后在主函数给出想要爬取的公众号文章地址,依次调用函数运行即可。

1.获取网页信息

使用requests库的get函数定义获取网页信息的函数:

def getHTMLText(url):

try:

r=requests.get(url,timeout=30)

r.raise_for_status()

r.encoding=r.apparent_encoding

return r.text

except:

return ""

2.解析网页,获取所有图片url

调用BeautifulSoup库,使用find_all()函数查找网页img标签下的信息,再通过正则表达式获取url并存入adlist列表之中。对比上一篇爬取旧书网的心得,可以发现使用BeautifulSoup库和正则表达式的组合形式可以极其有效地解析网页,而且不至于出现解析错误。

def getimgURL(html):

soup = BeautifulSoup(html , "html.parser")

adlist=[]

for i in soup.find_all("img"):

try:

ad= re.findall(r'.*src="(.*?)?" .*',str(i))

if ad :

adlist.append(ad)

except:

continue

return adlist

3.新建文件夹pic,下载并保存爬取的图片信息

先设定需要下载路径root,然后判断路径是否存在,若不存在则新建路径,然后get()函数通过上面获得的图片链接进行下载,并保存在指定路径。

def download(adlist):

#注意更改文件目录

root="C:\\Users\yllzxzyq\Desktop\pics\\"

for i in range(len(adlist)):

path=root+str(i)+"."+‘tif’

if not os.path.exists(root):

os.mkdir(root)

if not os.path.exists(path):

r=requests.get(adlist[i][0])

with open(path,'wb') as f:

f.write(r.content)

f.close()

4.主函数

给出url,依次调用上述函数,爬取公众号文章的全部图片,存在指定目录。

def main():

url = 'https://mp.weixin.qq.com/s/iX-6WDd21W4k21MDp0RYDA'

html=getHTMLText(url)

list=getimgURL(html)

download(list)

main()

附一下全部源码链接:

import requests

from bs4 import BeautifulSoup

import re

import os

#获取网页信息

def getHTMLText(url):

try:

r=requests.get(url,timeout=30)

r.raise_for_status()

r.encoding=r.apparent_encoding

return r.text

except:

return ""

#解析网页,获取所有图片url

def getimgURL(html):

soup = BeautifulSoup(html , "html.parser")

adlist=[]

for i in soup.find_all("img"):

try:

ad= re.findall(r'.*src="(.*?)?" .*',str(i))

if ad :

adlist.append(ad)

except:

continue

return adlist

#新建文件夹pic,下载并保存爬取的图片信息

def download(adlist):

#注意更改文件目录

root="C:\\Users\yllzxzyq\Desktop\图片\\"

for i in range(len(adlist)):

path=root+str(i)+"."+'gif'

if not os.path.exists(root):

os.mkdir(root)

if not os.path.exists(path):

r=requests.get(adlist[i][0])

with open(path,'wb') as f:

f.write(r.content)

f.close()

def main():

url = 'https://mp.weixin.qq.com/s/iX-6WDd21W4k21MDp0RYDA'

html=getHTMLText(url)

list=getimgURL(html)

download(list)

main()

希望有所帮助,感谢阅读。

python爬公众号图片,Python爬虫实例:爬取微信公众号图片(表情包)相关推荐

  1. python爬取公众号历史文章_pythons爬虫:抓取微信公众号 历史文章(selenium+phantomjs)...

    原标题:pythons爬虫:抓取微信公众号 历史文章(selenium+phantomjs) 大数据挖掘DT数据分析 公众号: datadw 本文爬虫代码可以通过回复本公众号关键字"公众号& ...

  2. Python爬取微信公众号文章、点赞数

    代码还是热乎的,只要你细心一步步的慢慢调试,绝壁没问题 前期准备 订阅号: Python: Fiddler: 微信账号: 流程 使用用微信公众号生成cookie 使用Fiddler抓取微信公众号数据, ...

  3. python爬虫——爬取微信公众号的文章及图片

    参考 爬取公众号所有文章 想要爬取微信公众号的所有文章,微信只有文章是有地址的,如何找到这个公众号的所有文章呢? 找到该公众号的链接 打开公众号平台,找到创作图文消息 这样就找到了微信号 打开检查模式 ...

  4. python爬取微信公众号文章(包含文章内容和图片)

    之前虽然做过网页爬取,但微信爬取一直没做过,因为我一直不知道网页可以进微信公众平台,只用过微信客户端进微信公众号.既然可以通过网页进微信公众平台,那么爬取微信公众号文章就流程上就没太多难度了. 自己在 ...

  5. python爬取京东商品图片_python利用urllib实现爬取京东网站商品图片的爬虫实例

    本例程使用urlib实现的,基于python2.7版本,采用beautifulsoup进行网页分析,没有第三方库的应该安装上之后才能运行,我用的IDE是pycharm,闲话少说,直接上代码! # -* ...

  6. python爬虫能爬取微信密码吗_爬虫如何爬取微信公众号文章

    下篇文章:python爬虫如何爬取微信公众号文章(二) 下下篇连接python爬虫如何实现每天爬取微信公众号的推送文章 因为最近在法院实习,需要一些公众号的数据,然后做成网页展示出来便于查看,之前我倒 ...

  7. Python爬虫系列之爬取微信公众号新闻数据

    Python爬虫系列之爬取微信公众号新闻数据 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发 > 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流 ...

  8. python爬虫实战-爬取微信公众号所有历史文章 - (00) 概述

    http://efonfighting.imwork.net 欢迎关注微信公众号"一番码客"获取免费下载服务与源码,并及时接收最新文章推送. 最近几年随着人工智能和大数据的兴起,p ...

  9. python爬虫爬取微信公众号小程序信息

    python爬虫爬取微信公众号小程序信息 爬取内容 某汽车维修信息提供的维修店名称,地点以及电话(手机)号码 爬取步骤 啥也别管,先抓包看看,在这里,博主使用的抓包软件是charles 抓包:将网络传 ...

  10. python爬虫爬取微信_如何使用 Python 爬取微信公众号文章

    我比较喜欢看公众号,有时遇到一个感兴趣的公众号时,都会感觉相逢恨晚,想一口气看完所有历史文章.但是微信的阅读体验挺不好的,看历史文章得一页页的往后翻,下一次再看时还得重复操作,很是麻烦. 于是便想着能 ...

最新文章

  1. 有哪些好用的协同办公软件?
  2. STL容器的基本特性和特征
  3. 【译】 Google: Still in The Search 搜索巨人Google的伟大转变 (四)
  4. 以太坊Sharding FAQ
  5. 什么是基金净值、单位净值、累计净值
  6. 如何在 Web 发布规则中使用证书进行 SSL 身份验证
  7. [BZOJ] 1610: [Usaco2008 Feb]Line连线游戏
  8. Hive(三)——数据定义
  9. 【Flask】from flask.ext.script import Manager
  10. 3D视觉创新方案分享:仓储VSLAM/商品三维重建/静态场景重建/表情识别等多个方向...
  11. Java编写简单的爱心
  12. python爬虫小案例
  13. 三星s7562刷android+2,三星s7562 4.1.2 rom刷机包(精简省电版)
  14. 1062. 洪水填充
  15. 全国海选第三期:广州赛区节目视频
  16. spark统计pv和uv值
  17. 简约卡通双十一营销策划PPT模版
  18. java 计算月份和日期
  19. 大数据剖析| 二线城市抢人大战,拼的到底是什么?
  20. 【基金学习】基金的相关计算题目

热门文章

  1. 【教育心理学】学习理论流派——行为主义学习理论
  2. 2020-03-12
  3. C语言equivalent用法,C语言相当于'setw'函数
  4. u检验中的查u界值表_u检验
  5. 四旋翼飞行器14——无人机中的OSD、数传、图传、FPV是什么?
  6. SharePoint 2016 Beta 2 使用体验
  7. gnu stubs arch linux,Linux 编译应用程序报错:fatal error: gnu/stubs-soft.h: No such file or directory...
  8. matlab检验数据异方差,求教!怀特异方差检验方法在matlab中的实现,以及广义最小平方法...
  9. Linux系统设置固定ip
  10. 第1142期AI100_机器学习日报(2017-11-03)