这是我的之前写的代码,今天发布到博客园上,说不定以后需要用。

开始:

#coding:utf-8
import werobot
import pymongo
 
class Gongzhonghao():
 
    def __init__(self,token,APP_ID,ENCODING_AES_KEY,APP_SECRET):
        self.robot = werobot.WeRoBot(token = token)
        self.robot.config['HOST'] = '0.0.0.0'
        self.robot.config['PORT'] = 80
        self.robot.config['APP_ID'] = APP_ID
        self.robot.config['ENCODING_AES_KEY'] = ENCODING_AES_KEY
        self.robot.config['APP_SECRET'] = APP_SECRET
 
    def _getNews_Count(self):
        """
        获取公众号图文消息总数
        :return: Int
        """
        mediacount = self.robot.client.get_media_count()
        news_count = mediacount['news_count']
        return news_count
 
    def getNews(self):
        """
        获取公众号所有的图文内容
        :return: Json
        """
        i = 0
        items = []
        news_count = self._getNews_Count()
        while i < news_count:
            tempj = self.robot.client.get_media_list('news', i, 20)
            items  = tempj['item'] + items
            i = i + 20
        j = {
            'total_count': news_count,
            'items': items
        }
        return j
 
    def echo(self):
        """
        用于公众号后台初次配置的验证
        :return: null
        """
        self.robot.run()
 
if __name__ == '__main__':
    g = Gongzhonghao('1', '2', '3','4')
    j = g.getNews()
    client = pymongo.MongoClient('ip', 27017)
    db = client.gongzhonghao
    xxx= db.xxx
    xxx.insert(j)

  然后连接数据库进行解析,数据库中包含图文消息html代码等信息。

# -*- coding:utf-8 -*-
 
import os
import urllib.parse
from html.parser import HTMLParser
 
import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
 
 
class ContentHtmlParser(HTMLParser):
    """
    过滤html标签
    """
 
    def __init__(self):
        HTMLParser.__init__(self)
        self.text = ""
 
    def handle_data(self, data):
        self.text += data
 
    def get_text(self):
        return self.text
 
 
mongo_client = MongoClient("ip", 27017)
mongo_db = mongo_client["gongzhonghao"]
 
 
def get_words():
    words = []
    with open("words.txt", encoding="utf-8") as words_file:
        for lines in words_file.readlines():
            if len(lines.strip()) == 0:
                continue
 
            if lines.find("、") != -1:
                for p in lines.split("、"):
                    words.append(p.replace("\n", ""))
            else:
                words.append(lines.replace("\n", ""))
    return words
 
 
def get_articles(clt):
    articles = []
 
    collection = mongo_db[clt]
    doc = collection.find_one()
    items = doc["items"]
    for it in items:
        content = it["content"]["news_item"][0]
        articles.append(content)
 
    return articles
 
 
def download(dir, file_name, url):
    if not os.path.exists(dir):
        os.mkdir(dir)
 
    try:
        resp = requests.get(url)
 
        path = dir + "\\" + file_name
 
        if os.path.exists(path):
            return
 
        with open(path, "wb") as f:
            f.write(resp.content)
    except :
        print(url)
 
def find_images(content):
    imgs = []
    c = urllib.parse.unquote(content)
    img_labels = BeautifulSoup(c, "html.parser").find_all("img")
    for img in img_labels:
        src = img.get("data-src")
        imgs.append(src)
    return imgs
 
 
def get_suffix(url):
    try:
        suffix = url[url.rindex("=") + 1:]
        if suffix == "jpeg" or suffix == "other":
            return ".jpg"
        return "." + suffix
    except:
        return ".jpg"
 
 
def filter_content(content):
    parser = ContentHtmlParser()
    parser.feed(content)
    return parser.get_text()
 
 
def check_jinyongci(content):
    fc = filter_content(content)
    words = get_words()
    invalids = []
    for w in words:
        if fc.find(w) != -1:
            invalids.append(w)
    return invalids
 
 
def save_jinyongci(clt, title, invalids):
    if len(invalids) == 0:
        return
 
    file = clt + "\\invalid.txt"
 
    with open(file, "a+",encoding="utf-8") as f:
        f.write("标题:" + title)
        f.write("\r\n敏感词:")
 
        for iv in invalids:
            f.write(iv)
            f.write("、")
 
        f.write("\r\n\r\n")
 
 
if __name__ == "__main__":
    clt = "xxx"
 
    if not os.path.exists(clt):
        os.mkdir(clt)
 
    articles = get_articles(clt)
    print(clt + ": 共" + str(len(articles)) + "个")
 
    for i in range(0, len(articles)):
        print("正在处理第 " + str(i) + " 个")
 
        title = articles[i]["title"]
        thumb_url = articles[i]["thumb_url"]
        content = articles[i]["content"]
 
        # 下载封面
        # path = os.path.join(clt, title)
        fname = str(i) + "_" + title.replace("|", "").replace("<", "").replace(">", "")
        download(clt, fname + get_suffix(thumb_url), thumb_url)
 
        # 找出文章中的图片
        imgs = find_images(content)
        index = 0
        for img in imgs:
            download(clt, fname + "_" + str(index) + get_suffix(img), img)
            index = index + 1
 
        # 找出文章中的敏感词
        invalids = check_jinyongci(content)
        print(invalids,'----',title)
        save_jinyongci(clt, title, invalids)

  附带极限词列表,进行过滤使用

最大程度、最高级、最高端、最奢侈、最低级、最便宜、史上最低价、最流行、最受欢迎、最先进科学、最新技术、最新科学
 
中国第一、全网第一、销量第一、排名第一、第一品牌、NO.1、TOP1、独一无二、全国第一、最后一波、大品牌之一、销冠
 
国家级、国际级、世界级、千万级、百万级、星级、5A、甲级、超甲级
 
顶级、尖端、顶尖、顶级享受、完美、至尊、空前、绝后、绝版、非此莫属、巅峰、前所未有、完美、翘楚之作、不可再生、不可复制、绝无仅有、寸土寸金、淋漓尽致、无与伦比、唯一、卓越
 
前无古人后无来者、绝版、珍稀、臻稀、稀少、绝无仅有、绝不在有、稀世珍宝、千金难求、世所罕见、不可多得、空前绝后、寥寥无几、屈指可数
 
独家、独创、独据、开发者、缔造者、创始者、发明者
 
首个、首选、独家、首发、首席、首府、首选、首屈一指、全国首家、国家领导人、国门、国宅、首次、填补国内空白、国际品质
 
大牌、金牌、名牌、王牌、领先上市、巨星、著名、掌门人、至尊、冠军
 
世界领先、领先、领导者、领袖、引领、创领、领航、耀领
  
史无前例、前无古人、永久、万能、百分之百

  

Python爬取微信公众号素材库的更多相关文章

  1. python爬取微信公众号

    爬取策略 1.需要安装python selenium模块包,通过selenium中的webdriver驱动浏览器获取Cookie的方法.来达到登录的效果 pip3 install selenium c ...

  2. 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)

    前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...

  3. 使用BeautifulSoup自动爬取微信公众号图片

    爬取微信分享的图片,根据不同的页面自行修改,使用BeautifulSoup爬取,自行格局HTML修改要爬取图片的位置 import re import time import requests imp ...

  4. python 爬取微信好友列表和个性签名,绘制个性签名云图

    python爬取微信好友列表和个性签名,绘制个性签名云图 1. 简要介绍 本次实验主要用到下面几个库 : 1)itchat---用于微信接口,实现生成QR码,用于微信扫描登陆 2)re(正则化)--- ...

  5. python爬取微信小程序(实战篇)

    python爬取微信小程序(实战篇) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90452656 展开 一.背景介绍 近期有需求需要抓 ...

  6. Python爬取微信小程序(Charles)

    Python爬取微信小程序(Charles) 本文链接:https://blog.csdn.net/HeyShHeyou/article/details/90045204 一.前言 最近需要获取微信小 ...

  7. python通过手机抓取微信公众号

    使用 Fiddler 抓包分析公众号 打开微信随便选择一个公众号,查看公众号的所有历史文章列表 在 Fiddler 上已经能看到有请求进来了,说明公众号的文章走的都是HTTPS协议,这些请求就是微信客 ...

  8. Python爬取微信好友

    前言 今天看到一篇好玩的文章,可以实现微信的内容爬取和聊天机器人的制作,所以尝试着实现一遍,本文记录了实现过程和一些探索的内容 来源: 痴海 链接: https://mp.weixin.qq.com/ ...

  9. Python+Tornado开发微信公众号

    本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 本教程针对的是已掌握Pyt ...

随机推荐

  1. ProtoStuff无法反序列化Deprecated注解成员问题记录

    在开发过程中,遇到一个鬼畜的问题,在DO的某个成员上添加@Deprecated注解之后,通过ProtoStuff反序列化得到的DO中,这个成员一直为null:花了不少时间才定位这个问题,特此记录一下 ...

  2. js继承的几种方法理解和代码演示

    1.属性继承 :call .apply:不建议使用浪费内存. function Person(name,age,sex){ this.name = name; this.age = age; this ...

  3. react-native-typescript-项目环境搭建

    1.yarn global add create-react-native-app //全局安装 2.create-react-native-app 项目名称 3.yarn add typescrip ...

  4. 2.RabbitMQ 的可靠性消息的发送

      本篇包含 1. RabbitMQ 的可靠性消息的发送 2. RabbitMQ 集群的原理与高可用架构的搭建 3. RabbitMQ 的实践经验   上篇包含 1.MQ 的本质,MQ 的作用 2.R ...

  5. Spark 系列(六)—— 累加器与广播变量

    一.简介 在 Spark 中,提供了两种类型的共享变量:累加器 (accumulator) 与广播变量 (broadcast variable): 累加器:用来对信息进行聚合,主要用于累计计数等场景: ...

  6. Web应用和Web框架

    一.Web应用 二.Web框架 三.wsgiref模块 一.Web应用 1.什么是Web应用? Web应用程序是一种可以通过Web访问的应用程序,特点是用户很容易访问,只需要有浏览器即可,不需要安装其 ...

  7. kubernetes第九章--管理机密信息

  8. iOS - swift 后使用打包动态库

    WWDC2014上发布的Xcode6 beta版有了不少更新,其中令我惊讶的一个是苹果在iOS上开放了动态库,在Xcode6 Beta版的更新文档中是这样描述的: Frameworks for iOS ...

  9. Vue的11个生命周期函数的用法

    实例的生命周期函数(官方11个):beforeCreate:在实例部分(事件/生命周期)初始化完成之后调用.created:在完成外部的注入/双向的绑定等的初始化之后调用.beforeMount:在页 ...

  10. js原型,原型链

    先铺垫下原型规则: 1.所有的引用类型(数组,对象,函数)都具有对象特性,可自由扩展属性(出了null外) 2.所有的引用类型(数组,对象,函数)都有一个__proto__属性(隐式原型),属性值是一 ...