使用Excel VBA + Firefox抓取电商数据

优采云 发布时间: 2022-05-08 22:14

  使用Excel VBA + Firefox抓取电商数据

  本文阐述基本思路和关键技术,仅供讨论学习。

  长文且艰,慎入。

  1)为什么使用Excel VBA + Firefox

  免去搭建python编程环境的麻烦。

  免去租用爬虫服务器的成本。

  有一定的HTML和VB语言基础就很容易上手。

  另外,笔者偏好Excel VBA的编程环境。

  2)获取销售链接

  这个很简单,批量导出即可。结果是N个产品的销售链接。

  3)价格数据抓取

  笔者的策略是直接抓取第三方比价网站的数据。比价网站的数据本身是爬来的。

  需要找到一个比较网站,能够以网页形式提供较长时段的动态价格图。

  然后查找背后的数据源,大致有两种情况,一是直接在网页源代码中提供,二是以数据包(如json)形式提供。

  前者容易发现,直接在商品页面提取就可以了,关键是找到唯一标识。

  后者则需要通过firefox控制台监控得到,需要获取真实网络地址。部分网站设置了秘钥(token),如果是完全的动态秘钥,算法难以破解,则只能放弃;如果是静态秘钥,即每次访问秘钥都相同,或者大部分字符相同,少部分字符不同但不影响访问结果,则可尝试以下方法:先在网页中查找秘钥函数代入的必要参数,然后使用firefox的Greasemonkey插件,在动态网页批量计算秘钥(直接调用计算函数,然后动态植入一个文本框呈现计算结果),拼接后批量生成网址,结果是对应N个销售链接的比价网站价格数据实际地址。

  最后,在Excel中用VBA做一个下载提取数据的循环,大致有两种方法:一是采用WebBrowser的innerhtml获取,好处是能够先看到网页的情况,便于调试;缺点是需要做窗体,而且内寸很快占满。如果计算机性能较差,需要做成Excel VBA的AutoOpen(),每下载一定数量就自动退出释放内存,并配合控制Excel反复启动的宏处理软件完成(也许有其他释放内存的方法,但笔者一直没有找到,在循环中unload窗体也无效)。其中,json文件需要注册格式避免出现另存为对话框,另外也要注意使用的IE内核版本。二是调用URLDownloadToFile,缺点是如果出错就没有文件保存下来,也不知道具体为啥,好处是速度快。

  4)商品详情数据抓取

  基本上都是网页中直接提供的,获取思路同前述价格数据抓取中直接在网页源代码提供的情况。

  部分网站以“div id=”的形式给出,这种最简单,因为id都是唯一的。如果没有id,只能用规律性的html代码来作为识别标记。需要注意电商网站中,自营和第三方入驻的,有货或下架的等等之间可能标记会不同,需要调试一定数量。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线