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引用(import)文件夹下的py文件的方法
Aug 26 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
python使用fork实现守护进程的方法
Nov 16 Python
浅析Git版本控制器使用
Dec 10 Python
分析python切片原理和方法
Dec 19 Python
python3实现跳一跳点击跳跃
Jan 08 Python
详解Python 装饰器执行顺序迷思
Aug 08 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
python3.6、opencv安装环境搭建过程(图文教程)
Nov 05 Python
python 基于pygame实现俄罗斯方块
Mar 02 Python
python实现自动化群控的步骤
Apr 11 Python
python利用pandas分析学生期末成绩实例代码
Jul 09 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 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
JS获取URL中的参数数据
2013/12/05 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
jQuery实现在下拉列表选择时获取json数据的方法
2015/04/16 Javascript
炫酷的js手风琴效果
2016/10/13 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
使用Javascript简单计算器
2018/11/17 Javascript
vue中利用simplemde实现markdown编辑器(增加图片上传功能)
2019/04/29 Javascript
js实现GIF动图分解成多帧图片上传
2019/10/24 Javascript
ES6 Symbol在对象中的作用实例分析
2020/06/06 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
pyside写ui界面入门示例
2014/01/22 Python
Python创建xml文件示例
2017/03/22 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
Tornado Web Server框架编写简易Python服务器
2018/07/28 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Python理解递归的方法总结
2019/01/28 Python
python实现处理mysql结果输出方式
2020/04/09 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Python:__eq__和__str__函数的使用示例
2020/09/26 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
药品采购员岗位职责
2014/02/08 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
奖学金感谢信
2015/01/21 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
公司处罚决定书
2015/06/24 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL