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中装饰器的使用
Jul 12 Python
python开发之for循环操作实例详解
Nov 12 Python
python实现简单多人聊天室
Dec 11 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
python动态视频下载器的实现方法
Sep 16 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
Python爬虫程序架构和运行流程原理解析
Mar 09 Python
django model object序列化实例
Mar 13 Python
pytorch快速搭建神经网络_Sequential操作
Jun 17 Python
Python如何定义接口和抽象类
Jul 28 Python
Scrapy爬虫文件批量运行的实现
Sep 30 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
php 传值赋值与引用赋值的区别
2010/12/29 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
php-fpm配置详解
2014/02/12 PHP
PHP标准库(PHP SPL)详解
2019/03/16 PHP
javascript中最常用的继承模式 组合继承
2010/08/12 Javascript
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
老生常谈 关于JavaScript的类的继承
2016/06/24 Javascript
只要1K 纯JS脚本送你一朵3D红色玫瑰
2016/08/09 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
ElementUI 修改默认样式的几种办法(小结)
2020/07/29 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
Python随机数random模块使用指南
2016/09/09 Python
Python制作词云的方法
2018/01/03 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
详解django.contirb.auth-认证
2018/07/16 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
PyTorch搭建一维线性回归模型(二)
2019/05/22 Python
numpy:np.newaxis 实现将行向量转换成列向量
2019/11/30 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
html5中的input新属性range使用记录
2014/09/05 HTML / CSS
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
英语生日邀请函
2014/01/23 职场文书
安全生产投入制度
2014/01/29 职场文书
农业项目投资意向书
2015/05/09 职场文书
致接力运动员加油稿
2015/07/21 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
关于EntityWrapper的in用法
2022/03/22 Java/Android
利用Redis实现点赞功能的示例代码
2022/06/28 Redis