haralyzer 半自动,一次性少量数据采集快捷方法

使用场景:半自动,一次性少量数据采集需求在工作中还是不少遇到的,无论使用模拟的方式,或者破解都不太划算。其实这种需求,使用半自动爬虫是最简单的。不需要考虑网站反爬虫的问题,因为你使用的就是真实的浏览器,不会通过代码来发起请求

  1. 从chrome获取har包
    首先打开浏览器的开发者工具,勾选上Perserve log复选框,如下图所示:

然后刷新页面。注意一定要先打开开发者工具再刷新页面,顺序不能搞反了。接下来,你就正常往下滚动页面或者点击翻页按钮,滚到你不想滚为止。此时开发者工具里面已经有很多数据包了。如下图所示:

在任何一个数据包上面右键,选择Save all as HAR with content。就会把当前页面的所有数据包全部合并到一个 har 文件里面,如下图所示:

备注:如果遇到需要来回跳转的页面,可以使用抓包工具获取har,这个自己搜吧

  1. 示例代码,只需要按提示修改相关变量和函数即可运行
python 复制代码
import json
import csv
import jsonpath
from haralyzer import HarParser
#功能: 解决一次性数据量不大的数据采集需求,通过chrome获取所有请求包,打包成har包,然后解析存储

# har包获取方法:
# 1、打开chrome的检查,
# 2:勾选Network中的Preserve log,
# 3:刷新当前网页,点击下一页或者滑动,直到自己需要的数据加载完,
# 4: 点击右上角的下载图标,或者是选择任意一个请求,右击,点击'Save all as HAR with content'

# 代码使用方法: 按照需要修改har_file_path, url_keyword, csv_title_title三个变量,以及解析函数parser_har, 其他都不需要动


def save_csv(title_list, data_list):
    '''
    保存数据到csv文件中
    '''
    data_list.insert(0, title_list)
    with open('result_csv.csv', 'w', encoding='utf-8-sig', newline='') as csvFile:
        writer = csv.writer(csvFile)
        # 写入多行用writerows
        writer.writerows(data_list)
    print('组合数据运行结束, 结果文件result_csv.csv位于当前目录下')

def read_har_file(har_file_path):
    '''
    读取指定路径的har文件
    '''
    har_parser = HarParser.from_file(har_file_path)
    data = har_parser.har_data
    entries = data['entries']
    for entry in entries:
        yield entry

def crawle_har_to_csv(har_file_path, url_keyword, csv_title_title):
    '''
    主启动函数
    '''
    all_result_list = []
    for entry in read_har_file(har_file_path):
        url = entry['request']['url']
        if url.find(url_keyword) > -1:
            print(url)
            body = entry['response']
            if 'text' in body['content']:
                content = body['content']['text']
                info = json.loads(content)
                if sub_result_list := parser_har(info):
                    all_result_list.extend(sub_result_list)
    save_csv(csv_title_title, all_result_list)

#需要修改
def parser_har(json_content):
    '''
    解析har中的相关数据,这个需要根据具体返回内容进行修改
    '''
    result_list = []
    data_list = jsonpath.jsonpath(json_content, '$.data.content.offerList.*')
    if data_list:
        for offer in data_list:
            result_list.append([offer['subject'], offer['price']])
        return result_list
    else:
        print('parser_har函数没有获取指定的data_list')
        return []

if __name__ == '__main__':
    #har包地址, 需修改
    har_file_path = r'C:\Users\men\Desktop\milishipin.1688.com.har'
    #择选的请求唯一关键词,用来筛选关键词, 需修改
    url_keyword = 'mtop.1688.shop.data.get/1.0'
    #csv文件中的title列表, 需修改
    csv_title_title = ['名称', '价格']

    crawle_har_to_csv(har_file_path, url_keyword, csv_title_title)
相关推荐
黑客-雨8 分钟前
从零开始:如何用Python训练一个AI模型(超详细教程)非常详细收藏我这一篇就够了!
开发语言·人工智能·python·大模型·ai产品经理·大模型学习·大模型入门
孤独且没人爱的纸鹤22 分钟前
【机器学习】深入无监督学习分裂型层次聚类的原理、算法结构与数学基础全方位解读,深度揭示其如何在数据空间中构建层次化聚类结构
人工智能·python·深度学习·机器学习·支持向量机·ai·聚类
l1x1n025 分钟前
No.35 笔记 | Python学习之旅:基础语法与实践作业总结
笔记·python·学习
是Dream呀1 小时前
Python从0到100(八十五):神经网络-使用迁移学习完成猫狗分类
python·神经网络·迁移学习
小林熬夜学编程1 小时前
【Python】第三弹---编程基础进阶:掌握输入输出与运算符的全面指南
开发语言·python·算法
hunter2062063 小时前
用opencv生成视频流,然后用rtsp进行拉流显示
人工智能·python·opencv
Johaden5 小时前
EXCEL+Python搞定数据处理(第一部分:Python入门-第2章:开发环境)
开发语言·vscode·python·conda·excel
小虎牙^O^6 小时前
2024春秋杯密码题第一、二天WP
python·密码学
梦魇梦狸º7 小时前
mac 配置 python 环境变量
chrome·python·macos
查理零世7 小时前
算法竞赛之差分进阶——等差数列差分 python
python·算法·差分