python爬取指定微信公众号文章


Posted in Python onDecember 20, 2018

本文实例为大家分享了python爬取微信公众号文章的具体代码,供大家参考,具体内容如下

该方法是依赖于urllib2库来完成的,首先你需要安装好你的python环境,然后安装urllib2库

程序的起始方法(返回值是公众号文章列表):

def openUrl():
  print("启动爬虫,打开搜狗搜索微信界面")
  # 加载页面
  url = 'http://weixin.sogou.com/weixin?type=1&s_from=input&query=要爬取的公众号名称'
  htmlContentObj = urllib2.urlopen(url)
  # 将页面转化为文本
  html = htmlContentObj.read()
  # 正则匹配
  str = re.findall(r"http://mp.weixin.qq.com/profile.+==",html)
  # 替换转义符得到可访问的链接地址
  tempHref = re.sub(r"&","&",str[0])
  return tempHref

根据获取到的文章列表的页的链接地址(注意是文章列表页面的得链接地址,不是文章的地址)将页面读取为文本

# 获取页面文本方法
def getHtmlStr(conurl):
  # 相当于把页面转化为文本
  response = urllib2.urlopen(conurl)
  # 读取文本的字符串
  htmlStr = response.read()
  return htmlStr

对读取为文本的页面进行分析并利用正则匹配获得公众号里面文章的标题,链接地址等内容得json对象

# 文本转换为所需要的json对象
def htmlToJsonObj(htmlStr):
  # 正则匹配并得到需要的json字符串
  jsonObjstr = re.findall(r"{\"list\":\[.+\]\}", htmlStr)
  # 字符串转json
  jsonObj = json.loads(jsonObjstr[len(jsonObjstr)-1])
  return jsonObj

然后从json对象中取出title,拼接url等(我这里只是获取了链接地址和标题),将两个内容分别存在两个数组,以json对象的方式返回出去(注意拼接url的时候要替换掉转义符(&))

# 从json对象中取出所需要的url
def jsonObjToArray(jsonObj):
  hrefs = []
  titles = []
  # url中的&在html中是& ,故需要替换,下面为正则
  patten = re.compile(r"&")
  # 数组
  arr = jsonObj["list"]
  # 循环添加
  for i in range(len(arr)):
    # 每次替换字符串
    fixHref = re.sub(patten,"&",arr[i]["app_msg_ext_info"]["content_url"])
    # 添加到数组
    titles.append(arr[i]["app_msg_ext_info"]["title"])
    hrefs.append("https://mp.weixin.qq.com"+fixHref)
  jsons = {"hrefs":hrefs,"titles":titles}
  return jsons
#打开浏览器,进行工作
def start():
  tempHref = openUrl()
  # 获取页面文本
  htmlStr = getHtmlStr(tempHref)
  # 文本转json对象
  jsonObj = htmlToJsonObj(htmlStr)
  # f返回所需要的url数组
  return jsonObjToArray(jsonObj)

最后通过启动程序的方法启动爬虫并打印爬取到的信息

if __name__=='__main__': 
  try:
    hrefs = start()
    count = len(hrefs["hrefs"])
    for i in range(count):
      print("标题:"+hrefs["titles"][i].encode("utf-8"))
      print("爬取到的路径:"+hrefs["hrefs"][i].encode("utf-8"))
    print("------------->>爬取并打印完毕")
  except Exception as e:
    print(str(e))

程序需要导入的包

import urllib2
import json
import re

依次赋值以上代码,填写要爬取的公众号,运行即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现对PPT文件进行截图操作的方法
Apr 28 Python
详解Python函数作用域的LEGB顺序
May 14 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
Python实现文件内容批量追加的方法示例
Aug 29 Python
Python基础学习之常见的内建函数整理
Sep 06 Python
python实现树形打印目录结构
Mar 29 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
python实现统计文本中单词出现的频率详解
May 20 Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
基于Tensorflow读取MNIST数据集时网络超时的解决方式
Jun 22 Python
在Django中URL正则表达式匹配的方法
Dec 20 #Python
python采集微信公众号文章
Dec 20 #Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
Dec 19 #Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
Dec 19 #Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 #Python
python爬虫超时的处理的实例
Dec 19 #Python
pycharm中使用anaconda部署python环境的方法步骤
Dec 19 #Python
You might like
教你如何把一篇文章按要求分段
2006/10/09 PHP
一个不易被发现的PHP后门代码解析
2014/07/05 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
为数据添加append,remove功能
2006/10/03 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
python实现中文分词FMM算法实例
2015/07/10 Python
用Python设计一个经典小游戏
2017/05/15 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
基于python操作ES实例详解
2019/11/16 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
详解python中各种文件打开模式
2020/01/19 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
Python趣味实例,实现一个简单的抽奖刮刮卡
2020/07/18 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
简单整理HTML5的基本特性和语法
2016/02/18 HTML / CSS
详解HTML5将footer置于页面最底部的方法(CSS+JS)
2018/10/11 HTML / CSS
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
中科软测试工程师面试题
2012/06/16 面试题
青年文明号服务承诺
2014/03/31 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
2016中秋节月饼促销广告语
2016/01/28 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis