主要技术
Playwright
微软开源自动化测试工具Playwright,支持主流浏览器,包括:Chrome、Firefox、Safari 等,同时支持以无头模式、有头模式运行,并提供了同步、异步的 API,可以结合主流测试框架使用,并且支持浏览器端的自动化脚本录制等功能。
特点:
- 跨浏览器:Playwright 支持所有现代渲染引擎,包括Chromium、WebKit 和 Firefox;
- 跨平台:在 Windows、Linux 和 MacOS 上进行本地或 CI、无头或有头测试;
- 跨语言:在 TypeScript、JavaScript、Python、.NET、Java 中使用Playwright API;
- 测试移动网络:适用于 Android 和 Mobile Safari 的 Google Chrome 原生移动仿真。相同的渲染引擎适用于您的桌面和云端。
Beautiful Soup
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.
实现逻辑
- 用Playwright实现模拟浏览器的操作,访问需要爬取的商品url,等网页加载完毕之后,获取到网页对应的html,将html丢进Beautiful Soup中处理,解析出需要提取的信息。
具体实现
因为1688的网站上价格的展示有几种类型,需要根据写几种解析规则才能准确得获取到价格的相关信息。下面是一些具体的例子:
- 只有一个型号一个价格:
这种情况是最容易处理的,通过网页的开发者工具定位到这个价格的元素,找到他的唯一标识,即可通过Beautiful Soup将其提取出来。 示例代码:
soup.find_all('span', {'class': 'price-text'})
- 价格是一个范围,每个型号有自己的价格:
-
价格都在页面上:找到这一组价格标签的父级,然后再遍历这组标签,根据型号属性筛选出对应的价格
-
价格需要点击之后,动态刷新出来:等页面刷新出来之后,通过Playwright模拟鼠标的点击动作,并且在每次的点击之后将页面的html丢进Beautiful Soup中提取信息存到一个列表中,等所有型号都点击完毕之后就对相关价格进行匹配提取。