微信订阅号已经改版了,这篇文章已经过时了,不过可以提供还算有价值的参考。

    微信公众号已经成为生活的一部分了,虽然里面有很多作者只是为了蹭热点,撩读者的 G 点,自己从中获得一些收益;但是不乏好的订阅号,像刘大的码农翻身、曹大的caoz的梦呓等订阅号非常值得阅读。

    平时有时候看到一些好的公众号,也会不自觉去查看该公众号的历史文章,然而每次都看不完,下一次再从微信里面打开历史文章,又需要从头翻起。而且对于写了很多年的大号,每次还翻不到底。有一些平台提供了相关的服务,但是得收几十块钱的费用,倒不是缺几十块钱,主要是觉得这种没必要花的钱不值得去浪费。

    网上搜如何爬微信公众号历史文章,大致给了三种思路,第一是使用搜狗微信搜索文章,但是好像每次能搜到的不多;第二是使用抓包工具;第三种是使用个人订阅号进行抓取。

    简单来说就是使用程序来模拟人的操作,抓取公众号历史文章。首先登录微信公众号个人平台,期间需要管理员扫码才能登录成功。

def __open_gzh(self):self.driver.get(BASE_URL)self.driver.maximize_window()username_element = self.driver.find_element_by_name("account")password_element = self.driver.find_element_by_name("password")login_btn = self.driver.find_element_by_class_name("btn_login")username_element.send_keys(USERNAME)password_element.send_keys(PASSWORD)login_btn.click()WebDriverWait(driver=self.driver, timeout=200).until(ec.url_contains("cgi-bin/home?t=home/index"))# 一定要设置这一步,不然公众平台菜单栏不会自动展开self.driver.maximize_window()

    进入微信公众平台首页后,点击素材管理,然后点击新建图文素材,就会进入到文章写作页面,此时前面打开的微信公众平台首页就不需要了,可以将其关闭。

def __open_write_page(self):management = self.driver.find_element_by_class_name("weui-desktop-menu_management")material_manage = management.find_element_by_css_selector("a[title='素材管理']")material_manage.click()new_material = self.driver.find_element_by_class_name("weui-desktop-btn_main")new_material.click()# 关闭公众平台首页handles = self.driver.window_handlesself.driver.close()self.driver.switch_to_window(handles[1])

    在文章写作页面的工具栏上面有一个超链接按钮,点击超链接即会弹出超链接编辑框,选择查找文章,输入自己喜欢的公众号进行查找,一般第一个就是自己想要的结果,点击对应的公众号,该公众号所有的文章就会通过列表的形式展现出来。

def __open_official_list(self):# 超链接link_click = self.driver.find_element_by_class_name("edui-for-link")link_click.click()time.sleep(3)# 查找文章radio = self.driver.find_element_by_class_name("frm_vertical_lh").find_elements_by_tag_name("label")[1]radio.click()# 输入查找关键字search_input = self.driver.find_element_by_class_name("js_acc_search_input")search_input.send_keys(OFFICIAL_ACCOUNT)search_btn = self.driver.find_element_by_class_name("js_acc_search_btn")search_btn.click()# 等待5秒,待公众号列表加载完毕time.sleep(5)result_list = self.driver.find_element_by_class_name("js_acc_list").find_elements_by_tag_name("div")result_list[0].click()

    文章列表已经展现出来了,直接抓取每条文章超链接的信息即可,每抓取完一页就进入下一页,继续抓取文章列表信息,直到所有文章信息都抓取完毕。

def __get_article_list(self):# 等待文章列表加载time.sleep(5)total_page = self.driver.find_element_by_class_name("search_article_result")\.find_element_by_class_name("js_article_pagebar").find_element_by_class_name("page_nav_area")\.find_element_by_class_name("page_num")\.find_elements_by_tag_name("label")[1].texttotal_page = int(total_page)articles = []for i in range(0, total_page-1):time.sleep(5)next_page = self.driver.find_element_by_class_name("search_article_result")\.find_element_by_class_name("js_article_pagebar").find_element_by_class_name("pagination")\.find_element_by_class_name("page_nav_area").find_element_by_class_name("page_next")article_list = self.driver.find_element_by_class_name("js_article_list")\.find_element_by_class_name(" my_link_list").find_elements_by_tag_name("li")for article in article_list:article_info = {"date": article.find_element_by_class_name("date").text,"title": article.find_element_by_tag_name("a").text,"link": article.find_element_by_tag_name("a").get_attribute("href")}articles.append(article_info)next_page.click()return articles

    至此,微信公众号历史文章的爬虫已经实现,其实整个过程只不过是用程序来模拟的了人类的操作。需要注意的是,程序不能设置太快,因为微信做了相关限制,所以设太快会在一段时间内无法使用文章查找功能;另外一点是使用选择器选择页面元素的时候,会有一些坑,而且我发现不同账号登录,有很少部分的页面元素虽然直观上是一样的,但是它的 html 代码有细微的差别。

    这个小程序会用到selenium库,和chromedriver,前者直接pip install即可,后者自行下载;另外你还需要一个订阅号才行,本文只实现了关键的文章信息抓取,并没有进行文章信息的持久化存储,完整代码在这里。

如何抓取微信公众号历史文章?使用订阅号实现微信公众号历史文章爬虫相关推荐

  1. 搜狗微信公众号文章抓取

    机器能做的事就别让人来做! 目标: 抓取特定微信公众号文章 思路:利用selenium模拟浏览器行为,进行抓取(理由:搜狗已将文章链接进行处理,且页面为动态生成) 框架: 步骤: 1.登录搜狗 a.找 ...

  2. java 抓取搜狗微信_搜狗微信公众号文章抓取

    机器能做的事就别让人来做! 目标: 抓取特定微信公众号文章 思路:利用selenium模拟浏览器行为,进行抓取(理由:搜狗已将文章链接进行处理,且页面为动态生成) 框架: 步骤: 1.登录搜狗 a.找 ...

  3. [458]抓取微信公众号(一)

    微信文章抓取(1):微信公众号文章抓取常识之临时链接.永久链接 曾经尝试过抓取微信文章的小伙伴,一定很熟悉搜狗微信.搜狗微信是腾讯官方提供的搜索引擎,专门用来搜索微信公众号发表的文章(不包含服务号). ...

  4. 利用Python爬虫抓取小说网站全部文章

    我们先来选定爬取目标,我爬取的网站是https://www.17k.com/ ,一些大型的网站(如起点.豆瓣等)做了反爬虫的部署,这会大大增加我们抓取的难度,所以尽量还是选一些不那么热门的网站. 爬虫 ...

  5. 抓取5W数据,解密「原价收+1.5折卖」的二手书小程序

    增长黑盒备用号,欢迎关注~ 大号出现了一些小意外被屏蔽,感谢各位朋友关心~ 为了以防万一,我们新建了两个公众号,一个是[增长黑盒精选],另一个是本号[增长黑盒Growthbox]备用,欢迎大家关注! ...

  6. 《毒液》:用Fiddler+MongoDB抓取猫眼APP短评

    欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习,python,R等数据领域感兴趣的同学 ...

  7. python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  8. ffmpeg抓取rtsp流并保存_详细解析RTSP框架和数据包分析(1)

    0.引言 本文主要讲解RTSP框架和抓取RTSP数据包,进行详细分析.可以阅读以下几篇文章,能够帮助你更详细理解. 手把手搭建RTSP流媒体服务器 HLS实战之Wireshark抓包分析 HTTP实战 ...

  9. http下载异常_百度网站抓取异常的原因有哪些?有什么影响和解决方法?

    大纲如下:1.抓取异常是什么?百度抓取异常又是什么?2.百度抓取异常的原因有哪些?3.网站抓取异常的原因有哪些?4.百度抓取异常对网站有什么影响?5.网站出现抓取异常的解决方法抓取异常是什么?百度抓取 ...

  10. python爬网站数据实例-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

最新文章

  1. 一个新游戏的思路;大家来说说看,觉得好的话,我做成游戏
  2. [转]DICOM医学图像处理:Deconstructed PACS之Orthanc
  3. SpringMVC(十三)异常注解
  4. django实现搜索功能
  5. java构造器构造方法_Java构造器(构造方法/constructor)
  6. 电脑换ip软件_如何使用爱加速换iP软件
  7. python基础学习笔记4--抽象
  8. 语言木头折断放置问题_沃尔玛验厂不能接受的问题点有哪些
  9. 2018-10-27
  10. ulipad 常用快捷键
  11. 吸引美女的50个必备技巧,并有79个…
  12. 软件无线电(SDR)及高频/高速(RF/Hi-Speed)标准集
  13. cad2016中选择全图字体怎么操作_一键完成CAD转PDF,CAD编辑,CAD打印,无奈没人知道这波骚操作!...
  14. Unity之FBX文件操作学习笔记(二)SDK sample代码初探
  15. Android流光动画,流光相机app_流光相机官网-多特软件站安卓网
  16. 更改已生成的exe文件的ico图标
  17. 苹果cms8个性化设置
  18. 用拼音输入希腊字母的方法
  19. Visitor模式实践
  20. xml生成xsd文件的方法

热门文章

  1. RealLanSee 同步多端口局域网屏幕监控系统(极好用低占用!)
  2. CloudFront 教程
  3. 光纤耦合电光调制器市场现状及未来发展趋势
  4. ThinkPHP开发的手册管理系统-文档云(仿看云),可二次开发
  5. 巧妙的构建你的数据科学作品集!
  6. Android飞书红包插件
  7. Unity烘培灯光贴图切换到Android平台后画质下降的问题
  8. 快应用开发快速上手及简明教程
  9. SLA服务可用性99.99,99.9,99.999.....是什么意思?
  10. day3 循环作业