如何爬取bcz的词汇

如何爬取BCZ的四级/六级词汇

声明:

以下内容仅供学习参考,切勿滥用,滥用与本作者无关!

一,安装Charles抓包工具

步骤:

  1. 打开Charles查看主机地址
  2. 配置手机端代理(主机地址:端口)
  3. 安装证书信任
  4. 抓取测试
  5. 抓取数据包
  6. 解析数据包
  7. 查看csv数据

关于下载安装Charles,安装证书,配置代理较为简单自行百度即可

打开BCZ下载词汇

image-20240406143639213

image-20240406143759570

二,抓取数据包

​ 打开Charles抓取数据包

image-20240406143007531

image-20240406144002817

第二个或更多同样操作,待下载完成之后放到同一个r目录下

三,解析数据包并保存

下载好的数据包应该是.zpk结尾的,如用文版打开为乱码,如下:

image-20240406144639670

依稀能看到几个关键字 句子,示意等

下面使用代码解析并保存为csv格式(Excel查看)

import glob
import re
import csv

def extract_url():
    zpk_repo_path = 'r2/'  # 存放zpk文件的文件夹路径
    file_list = glob.glob(zpk_repo_path + '*.zpk')
    fw = open('word.csv', 'wt',encoding='utf-8-sig',newline="")
    # 注意如使用excel打开需使用utf-8-sig编码格式,否则乱码.  newline=""不产生第二行空格
    csv_writer = csv.writer(fw)
    title = ['word','例句','mean','句意']
    csv_writer.writerow(title)  # 写入标题

    for file in file_list:
        print(file)
        with open(file, 'rb') as f:
            line = ''
            while line.find('sentence_audio') < 0:
                line = f.readline().decode('utf8', 'ignore')
            try:
                word = re.search('"word":"(.*?)"', line).group(1)
                word_trans = re.search('"mean_cn":"(.*?)"', line).group(1)
                sentence = re.search('"sentence":"(.*?)"(,|})', line).group(1)
                sentence = sentence.replace(r'\u0027', "'")
                sentence = sentence.replace('\\', "")
                sentence_trans = re.search('"sentence_trans":"(.*?)"', line).group(1)
                z = []
                z.append(word)
                z.append(sentence)
                z.append(word_trans)
                z.append(sentence_trans)
                csv_writer.writerow(z)
            except BaseException:
                print(file)
    fw.close()

def main():
    print('开始解析:')
    extract_url()
    print('解析完成!')


if __name__ == '__main__':
    main()


下载完成打开测试:

image-20240406145347896

抓取完成.

posted @ 2024-04-06 15:09  雪亦田  阅读(38)  评论(0)    收藏  举报