html文本保存为chm文档,并建立索引

上节讲解了如何抓取微信公众号文章,这节就来搞搞怎样保存,方便自己以后查阅。 这里我选择了chm。

有三个原因:
    1.chm可以建立索引,查阅文章比较方便
    2. chm暂时没发现有啥存储问题,例如图片不显示
    3. 管理方便,一个公众号一个chm

那么接着上回的直接讲保存。
步骤很简单,分两步:
1.下载网页
2. 用Easy CHM选择下载的网页直接转换即可

首先Easy CHM的安装,下载网址: http://www.etextwizard.com/cn/easychm.html
下载完毕一路next即可。到这里,准备工作已经ok。
下面贴公众号的下载代码:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190110221250970.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NyYXp5X19Ib3Bl,size_16,color_FFFFFF,t_70
相比上次仅添加了这些用红色线条框住的代码。

网页下载完毕,把这些网页单独拖到一个文件夹当中,任意命名。
然后打开easychm
在这里插入图片描述
点击浏览选择你刚才保存网页的文件夹
在这里插入图片描述
然后点击 搜索选项
在这里插入图片描述
请选择这三个选项与这里保持相同。点击确定
在这里插入图片描述
然后点击编译。
在这里插入图片描述
方框1的位置是chm生成的标题,可以自己设置。然后点击方框二,CHM设置
在这里插入图片描述
请勾选这一选项,建立索引。
最后点击确定,然后生成chm文档即可。
最后效果图:
在这里插入图片描述

下面贴完整的mitmdump的抓包脚本

# -*- encoding:utf-8 -*-
import requests
import json
import time
import html


def parse(__biz, uin, key, pass_ticket, appmsg_token="", offset="0", **kwargs):
    url = "https://mp.weixin.qq.com/mp/profile_ext"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.901.400 QQBrowser/9.0.2524.400",
    }
    params = {
        "action": "getmsg",
        "__biz": __biz,
        "f": "json",
        "offset": str(offset),
        "count": "10",
        "is_ok": "1",
        "scene": "124",
        "uin": uin,
        "key": key,
        "pass_ticket": pass_ticket,
        "wxtoken": "",
        "appmsg_token": appmsg_token,
        "x5": "0",
    }
    proxies = {
        "https": None,
        "http": None,
    }
    res = requests.get(url, headers=headers, params=params, proxies=proxies, timeout=3)
    data = json.loads(res.text)
    msg_list = eval(data.get("general_msg_list")).get("list", [])
    for i in msg_list:
        url = i["app_msg_ext_info"]["content_url"].replace("\\", "").replace("http", "https")
        url = html.unescape(url)
        title = i["app_msg_ext_info"]["title"]
        print(title, url)
        res = requests.get(url, headers=headers, proxies=proxies, timeout=3)
        with open(title+".html", "wb+") as f:
            f.write(res.content)

    # 判断是否可继续翻页 1-可以翻页  0-到底了
    if 1 == data.get("can_msg_continue", 0):
        time.sleep(3)
        parse(__biz, uin, key, pass_ticket, appmsg_token, data["next_offset"])
    else:
        print("爬取完毕")


def response(flow):
    if "profile_ext?action=home" in flow.request.url:
        params = flow.request.url.split("?")[1]
        params = {i.split("=")[0]: i.split("=")[1] for i in params.split("&")}
        params["__biz"] = params["__biz"]+"=="
        params["uin"] = requests.utils.unquote(params["uin"])
        parse(**params)

到这里结束,over!!!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值