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

开始:

#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. springmvc中跨域问题

    对于web框架中的跨域问题是一个非常普遍的问题,常见的解决方案也有很多,如:jsonp.cros.websocket等.下面是最近处理springmvc中使用cors解决跨域问题的一些总结. Filt ...

  2. TCP协议的11种状态及其变化过程?传输的内容又是什么?

    在TCP的11种状态变迁中,我们需要用到TCP头部的三个标志位: 1.SYN,SYN=1表示这是一个连接请求报文或者连接接受报文 2.ACK,ACK=1,表示确认号生效 3.FIN,FIN=1表示发送 ...

  3. Java开发笔记(一百二十二)AWT选择框

    前面介绍了两种文本输入框的用法,不过实际应用很少需要用户亲自文字,而是在界面上列出几个选项,让用户勾勾点点完成选择,这样既方便也不容易弄错.依据选择的唯一性,可将选项控件分为两类:一类是在方框中打勾的 ...

  4. Linux04 目录的相关操作(mkdir、rmdir、rm、cp)

    一.创建目录:mkdir mkdir 目录名 二.删除目录:rmdir / rm rmdir 目录名 rm -r 目录名      每一级子目录都会询问是否删除 rm -rf 目录名     慎用,给 ...

  5. 2019/7/18ACM集训

    2019-07-18 09:15:34 这个是练习刷的题 Vus the Cossack and Numbers Vus the Cossack has nn real numbers aiai. I ...

  6. python threading模块的Lock和RLock区别

    首先了解这两者是什么. 以下说明参考自python官网 Lock:Lock被称为①原始锁,原始锁是一个②在锁定时不属于特定线程的同步基元组件,它是能用的最低级的同步基元组件.原始锁处于 "锁 ...

  7. oracle数据库 TIMESTAMP(6)时间戳类型

    时间戳类型,参数6指的是表示秒的数字的小数点右边可以存储6位数字,最多9位.由于时间戳的精确度很高,我们也常常用来作为版本控制. 插入时,如下方式:insert into test4 values(t ...

  8. WebapiController的名字不能随便取名

    在做webapi时候,遇到一个很坑的问题,就是新增一个控制器时,当新增加的控制器名称叫:AccountController.cs 自己测试,通过postman 访问 都没有问题,但是前端调用会报错,说 ...

  9. FindWindow SendMessage

    FindWindow 用来根据类名和窗口名来得到窗口句柄的.但是这个函数不能查找子窗口,也不区分大小写. 如果要从一个窗口的子窗口中查找需要使用FindWindowEX. 1.在C#中使用方法如下: ...

  10. Ubuntu18.04 GitLab仓库服务器搭建

    首先安装必须的一些服务 sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates sudo apt ...