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类的多重继承问题深入分析
Nov 09 Python
简介Python中用于处理字符串的center()方法
May 18 Python
Python实现股市信息下载的方法
Jun 15 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 Python
Python 实现12306登录功能实例代码
Feb 09 Python
python 不以科学计数法输出的方法
Jul 16 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
python 模拟银行转账功能过程详解
Aug 06 Python
python基于socket模拟实现ssh远程执行命令
Dec 05 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
python如何进行基准测试
Apr 26 Python
python绘图subplots函数使用模板的示例代码
Apr 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
咖啡风味 世界咖啡主要分布分布 咖啡的生长要求
2021/03/06 新手入门
php URL编码解码函数代码
2009/03/10 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
5 cool javascript apps
2007/03/24 Javascript
高性能WEB开发 flush让页面分块,逐步呈现 flush让页面分块,逐步呈现
2010/06/19 Javascript
将input file的选择的文件清空的两种解决方案
2013/10/21 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
2013/11/20 Javascript
window.showModalDialog()返回值的学习心得总结
2014/01/07 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
js点击button按钮跳转到另一个新页面
2014/10/10 Javascript
使用伪命名空间封装保护独自创建的对象方法
2016/08/04 Javascript
微信小程序  生命周期详解
2016/10/27 Javascript
详解webpack介绍&安装&常用命令
2017/06/29 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
jQuery使用each遍历循环的方法
2018/09/19 jQuery
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
Python实现购物车购物小程序
2018/04/18 Python
python解决字符串倒序输出的问题
2018/06/25 Python
Python xlrd excel文件操作代码实例
2020/03/10 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
大学生村官任职感言
2014/01/09 职场文书
运动会跳远广播稿
2014/02/04 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
学位证书委托书
2014/09/30 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python