目录

  • 支持库安装
  • 网页分析
  • 代码部分分析
    • 文章列表爬取
    • 图片列表爬取
    • 图片保存
  • 未来工作
  • 下载

支持库安装

pip install request
pip install beautifulsoup4
pip install Pillow

Requests :唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。

Beautiful Soup :是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。

Pillow 是一个对 PIL 友好的分支,而 PIL 是一个 Python 图像处理库。

网页分析

网页地址:
https://mp.weixin.qq.com/s/RQKeWQuOgtCnml-prMXC5w

爬取步骤:

  • 爬取文章列表
  • 文章页面发请求
  • 爬取图片列表
  • 保存图片

代码部分分析

文章列表爬取

find_all方法参数:
find_all( name , attrs , recursive , string , **kwargs )

参数名 描述
name 标签名,如“a”筛选<a>标签
attrs 参数字典
recursive 是否递归?默认真,遍历所有子节点
limit 返回一定数目的节点
String string 参数接受 字符串 , 正则表达式 , 列表, True
**kwargs 过滤器

**返回值:**节点集合ResultSet
详细信息:
https://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/#id27

def get_article_list(web_url):ans = {}html = requests.get(web_url).textsoup = BeautifulSoup(html, 'html.parser')result_set = soup.find_all('section', attrs={'style': 'padding-right: 0.6em;padding-bottom: 1em;padding-left: 0.6em;box-sizing: border-box;'})for result in result_set:category = result.find('span').text #不同类别sub_result_set = result.find_all('a')article_list=[]for sub_result in sub_result_set:article_url = sub_result['href']song_name = sub_result.textsong_name = song_name.split('》')[0].replace('《','')article_list.append({'name':song_name,'url':article_url})if len(article_list)!=0: ans[category] = article_listreturn ans

图片列表爬取

find_all(使用了匿名函数布尔表达式)
不是很容易判断图片位置(微信网页结构太乱)

def get_img_url(web_url):html = requests.get(web_url).textsoup = BeautifulSoup(html, 'html.parser')imgs = soup.find_all(lambda x:x.has_attr('data-src') and x.name=='img' and x['data-w']!='' and int(x['data-w'])>1000)imgs_url_list = [imgs[i]['data-src'] for i in range(len(imgs))]return imgs_url_list

图片保存

根据图片的url判断图片的尺寸
再决定是否保存

def write_img(file_path,img):with open(file_path, 'wb') as fd:fd.write(img)
def write_img_from_list(img_url_list,song_name):num=0for idx,img_url in enumerate(img_url_list,1):img = requests.get(img_url).contentim = Image.open(BytesIO(img))if im.width < im.height:num += 1file_path = os.path.join(key, song_name + '_' + str(num) + '.jpg', )write_img(file_path,img)print(song_name+':已爬取' + str(num) + '张图:')

未来工作

  • 模拟添加cookie和header(暂时不需要 )
  • 加快速度(并行多任务处理)

下载

开源地址:
https://github.com/ESwordCn/crawler_wechat_subscriptions

打包下载:

已按照不同首字母排序
上千张图片
下载地址:
https://download.csdn.net/download/Ejzq1/85065181

想免费下载?
下方点赞+关注+评论

Python零基础爬虫速成②:批量爬取微信公众号图片(基于beautifulsoup爬取吉他谱)相关推荐

  1. python爬取微信公众号_python使用webdriver爬取微信公众号

    本文实例为大家分享了python使用webdriver爬取微信公众号的具体代码,供大家参考,具体内容如下 # -*- coding: utf-8 -*- from selenium import we ...

  2. Python爬虫实例:爬取微信公众号图片(表情包)

    背景: 在学习了简单爬虫的编写之后,我试图通过编写爬取公众号图片(表情包)来丰富我的聊天技能,亦不致于败给各种熊猫头. 在学习了requests库之后,就能够很轻松地爬取静态页面的信息,把网页对象获取 ...

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

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

  4. 记一次批量定时抓取微信公众号文章的实现

    记一次批量定时抓取微信公众号文章的实现 抓取前的说明和准备 数据的抓取 批量抓取 定时抓取 对爬虫防抓取机制的一些解决办法 最后 抓取前的说明和准备 本次抓取的选择的语言是java,本文章不会将整个工 ...

  5. 【Python爬虫】下载微信公众号图片

    大家用爬虫下载图片时肯定遇到过https://demo?wx_fmt=jpeg链接的图片,常见的就是微信公众号的图片. 遇到链接图片用普通的方式是无法爬取下来的,我们可以用urllib.request ...

  6. Python零基础爬虫之回车桌面壁纸并实现自动换壁纸(内附完整源码)

    前言 嗨喽,大家好,这里是魔王~ [课题]: Python零基础爬虫之回车桌面壁纸 [课题介绍]: 壁纸不应该只是一张图片,它应该是一门哲学 回车桌面网100000张无水印,高分辨率,电脑桌面壁纸, ...

  7. python爬虫如何实现每天爬取微信公众号的推送文章

    python爬虫如何实现每天爬取微信公众号的推送文章 上上篇文章爬虫如何爬取微信公众号文章 上篇文章python爬虫如何爬取微信公众号文章(二) 上面的文章分别介绍了如何批量获取公众号的历史文章url ...

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

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

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

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

  10. python爬虫公众号_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

最新文章

  1. 【 C 】对指针表达式的个人总结与思考
  2. java专业编码_java编码中的坑(记一次解决编码BUG的经历) - 贪吃蛇学院-专业IT技术平台...
  3. div+css中设置了float属性后如何让外层的高度随着内层的高度大小自动调整
  4. NXP I.MX6ULL 交叉编译工具链下载地址?
  5. 学习使用 Manifest
  6. 【Java文件操作】txt文件的创建
  7. 专科计算机网络期末考试,计算机网络(专科)期末练习题.doc
  8. OpenCV的工具函数
  9. 数据结构之基于Java的顺序栈实现
  10. matlab元胞元素_MATLAB元胞数组(cell)知识
  11. 计算机wind10切换桌面wind7系统,win10多桌面切换的方法以及开启步骤是怎样的
  12. 利用Excel的LINEST计算线性拟合的斜率和截距的不确定性
  13. c语言 switch语句实例,C语言switch语句
  14. 如何在word中一次性删除硬回车或软回车
  15. 腾讯坐标系转化成百度坐标系
  16. 利用Python进行粗糙的视频字幕识别
  17. 数据库上机实验三(游标)
  18. 键入传真服务器位置是什么意思,2014传真服务器主要功能与技术参数说明.doc
  19. LeedCode 172. 阶乘后的零
  20. 《Elixir In Action》第一章--第五章笔记

热门文章

  1. ant design——Modal
  2. 最小二乘法(least squares)的曲线拟合(curve fitting)
  3. Git 连接码云 上传本地项目
  4. 从一个编程老菜鸟来看Delphi的优点
  5. 详细讲一下delphi里的 IF 语句
  6. python爬取五百丁word模板(有图+有代码)
  7. 软件需求功能测试用例,软件测试用例与需求的对应关系
  8. 测绘航空摄影、摄影测量与遥感资质办理
  9. Fw cs6破解版下载 准备学前端的同学们应该会用到的神器
  10. 经纬度坐标转像素坐标