当前位置: 首页 > news >正文

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

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

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

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

在这里插入图片描述

在任何一个数据包上面右键,选择Save all as HAR with content。就会把当前页面的所有数据包全部合并到一个 har 文件里面,如下图所示:
在这里插入图片描述
备注:如果遇到需要来回跳转的页面,可以使用抓包工具获取har,这个自己搜吧

  1. 示例代码,只需要按提示修改相关变量和函数即可运行
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)# 写入多行用writerowswriter.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_dataentries = data['entries']for entry in entries:yield entrydef 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_listelse: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)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++系列-继承中的对象模型
  • Spring Boot 使用 MongoDB 教程
  • SpringBoot日志整合
  • 大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
  • 第五天:java网络编程、JDBC与高级特性概览
  • 推荐一个根据后台提供的接口json文件自动生成前端调用接口的插件typescript
  • Mysql基础篇
  • Java高级Day28-让坦克动起来
  • 保命指南,家里有浮毛、异味竟会危害健康?去浮毛空气净化器推荐
  • vue的混入介绍
  • 我常用的几个傻瓜式爬虫工具,收藏!
  • Luminar Neo for Mac/Win:创新AI图像编辑软件的强大功能
  • vuex properties of undefined (reading ‘getters‘)
  • k8s 存储卷管理 持久卷 pv/pvc 临时卷
  • ESP32播放网络音频文件
  • 2017-08-04 前端日报
  • Apache Spark Streaming 使用实例
  • canvas 五子棋游戏
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • es6
  • gcc介绍及安装
  • JAVA之继承和多态
  • mysql_config not found
  • node学习系列之简单文件上传
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 欢迎参加第二届中国游戏开发者大会
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 开源SQL-on-Hadoop系统一览
  • 理解在java “”i=i++;”所发生的事情
  • 巧用 TypeScript (一)
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 提醒我喝水chrome插件开发指南
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (void) (_x == _y)的作用
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (二)linux使用docker容器运行mysql
  • (七)glDrawArry绘制
  • (实战篇)如何缓存数据
  • (四)JPA - JQPL 实现增删改查
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (正则)提取页面里的img标签
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)详解PHP处理密码的几种方式
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net core控制台应用程序初识
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET上SQLite的连接