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的Django框架中更新数据库数据的方法
Jul 17 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
Python探索之实现一个简单的HTTP服务器
Oct 28 Python
python matplotlib实现双Y轴的实例
Feb 12 Python
python3对接mysql数据库实例详解
Apr 30 Python
python IDLE 背景以及字体大小的修改方法
Jul 12 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
基于Python实现2种反转链表方法代码实例
Jul 06 Python
python入门:argparse浅析 nargs='+'作用
Jul 12 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 Python
Python项目实战之使用Django框架实现支付宝付款功能
Feb 23 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 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 4.2书写安全的脚本
2006/10/09 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php 模拟POST|GET操作实现代码
2010/07/20 PHP
PHP和.net中des加解密的实现方法
2013/02/27 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
JQUERY 实现窗口滚动搜索框停靠效果(类似滚动停靠)
2013/03/27 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
轻松掌握JavaScript装饰者模式
2016/08/27 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
vue循环数组改变点击文字的颜色
2019/10/14 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
澳大利亚足球鞋和服装购物网站:Ultra Football
2018/10/11 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
师范生自荐信范文
2013/10/06 职场文书
测试工程师岗位职责
2013/11/28 职场文书
大学毕业感言50字
2014/02/07 职场文书
中学教师教育感言
2014/02/21 职场文书
质量管理标语
2014/06/12 职场文书
美术课外活动总结
2014/07/08 职场文书
无房证明范本
2014/09/17 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
python 详解turtle画爱心代码
2022/02/15 Python
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技