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的getattr(),setattr(),delattr(),hasattr()
Jun 14 Python
Python中强大的命令行库click入门教程
Dec 26 Python
python实现下载文件的三种方法
Feb 09 Python
浅谈scrapy 的基本命令介绍
Jun 13 Python
浅谈关于Python3中venv虚拟环境
Aug 01 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
解决新django中的path不能使用正则表达式的问题
Dec 18 Python
Python中logging实例讲解
Jan 17 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
Aug 07 Python
Python 如何查找特定类型文件
Aug 17 Python
Python一行代码实现自动发邮件功能
May 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学习笔记之数组篇
2011/06/28 PHP
利用curl 多线程 模拟 并发的详解
2013/06/14 PHP
YII使用url组件美化管理的方法
2015/12/28 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
JavaScript 字符串乘法
2009/08/20 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
图像替换新技术 状态域方法
2010/01/28 Javascript
读jQuery之三(构建选择器)
2011/06/11 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
Node.js文件操作详解
2014/08/16 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
Vue动态路由缓存不相互影响的解决办法
2019/02/19 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
微信小程序上传图片到php服务器的方法
2019/05/23 Javascript
[02:38]DOTA2亚洲邀请赛小组赛精彩集锦:Wings完美团击溃对手
2017/03/29 DOTA
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
Python修改列表值问题解决方案
2020/03/06 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
python属于软件吗
2020/06/18 Python
彻底解决Python包下载慢问题
2020/11/15 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
python 基于PYMYSQL使用MYSQL数据库
2020/12/24 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
什么是表空间(tablespace)和系统表空间(System tablespace)
2013/02/25 面试题
请写出一段Python代码实现删除一个list里面的重复元素
2015/12/29 面试题
文明好少年事迹材料
2014/08/19 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
二审答辩状范文
2015/05/22 职场文书
2015年行政执法工作总结
2015/05/23 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python