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 相关文章推荐
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
python复制列表时[:]和[::]之间有什么区别
Oct 16 Python
python生成九宫格图片
Nov 19 Python
spark dataframe 将一列展开,把该列所有值都变成新列的方法
Jan 29 Python
Python魔法方法详解
Feb 13 Python
python pygame实现五子棋小游戏
Oct 26 Python
将python安装信息加入注册表的示例
Nov 20 Python
使用 Python 处理3万多条数据只要几秒钟
Jan 19 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
pycharm软件实现设置自动保存操作
Jun 08 Python
基于Python实现2种反转链表方法代码实例
Jul 06 Python
Pycharm安装Qt Design快捷工具的详细教程
Nov 18 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代码DOS造成用光网络带宽
2011/03/01 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
Vue实例中生命周期created和mounted的区别详解
2017/08/25 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
bootstrap中的导航条实例代码详解
2019/05/20 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python开发常用的一些开源Package分享
2015/02/14 Python
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
Python在Windows和在Linux下调用动态链接库的教程
2015/08/18 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
2020/08/04 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
法律专业自我鉴定
2013/10/03 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
广播体操比赛口号
2014/06/10 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
班主任培训研修日志
2015/11/13 职场文书
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis