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单元测试框架unittest使用方法讲解
Apr 13 Python
Python实现购物程序思路及代码
Jul 24 Python
Python实现解析Bit Torrent种子文件内容的方法
Aug 29 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
使用python画个小猪佩奇的示例代码
Jun 06 Python
Python最小二乘法矩阵
Jan 02 Python
学习python可以干什么
Feb 26 Python
windows上安装python3教程以及环境变量配置详解
Jul 18 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
如何快速理解python的垃圾回收机制
Sep 01 Python
浅谈Python中的函数(def)及参数传递操作
May 25 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
长波知识介绍
2021/03/01 无线电
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
2013/09/30 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
JS判断数组四种实现方法详解
2020/06/29 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
JS实现纸牌发牌动画
2021/01/19 Javascript
python获取指定网页上所有超链接的方法
2015/04/04 Python
Python实现图片添加文字
2019/11/26 Python
Python实现画图软件功能方法详解
2020/07/28 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
加拿大租车网站:Enterprise Rent-A-Car
2018/07/26 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述。
2015/11/09 面试题
职称自我鉴定
2013/10/15 职场文书
信息系统专业个人求职信范文
2013/12/07 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
开学典礼决心书
2014/03/11 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
环保标语口号
2014/06/13 职场文书
单位消防安全责任书
2014/07/23 职场文书
工程进度款催款函
2015/06/24 职场文书
用Python实现一个打字速度测试工具来测试你的手速
2021/05/28 Python