本教程讲解利用ForeSpider工具抓取京东商品数据的方法与步骤。
1、 进入页面,点击任务列表右上角的按钮创建新任务,在栏输入京东商品列表页链接,可自行设定,填写完毕后点击下一步继续操作。
2、 选择普通翻页后点击完成按钮,任务即创建成功。
3、 在浏览器中依次点击第二、三、四页,复制翻页链接,分析其变化规律。
4、 找到翻页链接的规律是:
5、 打开新建的模板任务,选择翻页链接,进入脚本窗口并创建新脚本。
6、 依据新发现的翻页规则,编写脚本自动生成完整的翻页链接。
7、 声明一个URL类型的变量u。
8、 循环变量 i 从 1 到 10,表示依次采集前 10 页的商品信息,每轮处理一页数据。
9、 {
10、 定义变量a等于页数的两倍减一。
11、 将b定义为5加上(页码减2)乘以6的结果。
12、 将目标链接中的页码参数动态替换,构造新的请求地址。通过分析分页规则,将基础URL中的页码部分用变量a表示,每页数据量偏移值用变量b参与计算,最终生成完整的分页请求链接。其中包含分类编码、筛选条件、会话标识及点击统计参数,实现自动化翻页抓取功能。
13、 链接标题为原始标题加上第i页,用于标识当前页面序号。
14、 将u.tmplid设置为2,关联第二个模板。
15、 }
16、 预览采集结果,复制任一页链接在浏览器打开,核对内容是否一致。
17、 在模板02中创建数据抽取任务,操作步骤详见下图所示。
18、 创建数据表,点击图中加号按钮,新增表后添加字段,各字段属性详见下图所示。
19、 将创建的数据表与模板进行关联,操作所示。
20、 通过脚本方式进行字段抽取,需在数据抽取模板中创建新的脚本窗口来实现。
21、 采集预览时,复制翻页链接并在浏览器中打开即可。
22、 按下F12后,点击源码框左上角的指针工具,将其对准首个商品,在右侧代码中定位对应位置。
23、 经分析,每个商品信息均位于class为gl-warp clearfix容器内,其子元素中所有标签名为li的节点即为商品条目。
24、 查看首个商品的源代码,发现价格信息位于class为p-price的节点中,商品名称及链接包含在class为p-name p-name-type-3的节点内,而店铺名称则存储于class为p-shop的节点中。通过解析这些关键节点,可准确提取所需的商品数据内容。
25、 价格位置见下图所示
26、 商品名称及链接位置见下图所示
27、 商品店铺名称位置见下图所示
28、 根据上述分析,编写数据提取脚本,详情见下图。
29、 声明一个用于存储返回数据的变量 re。
30、 将 class 属性为gl-warp clearfix的 ul 元素通过 DOM 查找方法选中,并将其赋值给变量 orders,用于后续操作和处理该节点内容。此操作常用于网页中特定列表区域的定位与数据提取。
31、 将order定义为orders的子节点,即选取第一个标签名为li的元素作为其子节点。
32、 循环遍历订单,持续获取所有标签名为li的节点,直至遍历完成。
33、 {
34、 将order节点中类名为p-price的div元素的子节点赋值给变量pri,即获取该特定类名下的直接子级元素作为操作对象。
35、 在order节点下查找具有类名p-name p-name-type-3的div元素,并将其赋值给变量ti,实现对指定DOM元素的定位与引用,便于后续操作和处理,确保程序能够准确获取目标节点内容并执行相应逻辑。
36、 将 order 节点中类名为 p-shop 的 div 元素的子节点赋值给变量 sho,用于后续操作该元素的下级结构。
37、 获取 ti 节点的子节点的子节点中的全部文本内容,并将其赋值给 tit。
38、 将pri节点内的全部文本内容提取并赋值给re.price。
39、 将sho节点内的全部文本内容提取并赋值给re.shop,实现数据获取与存储。
40、 将ti节点的子节点href属性值赋给re对象的url_属性。
41、 将上述数据添加至结果集中,并关联指定的模式编号。
42、 将 order 更新为它的下一个节点,也就是将 order 指向下一个 name 为的元素。
43、 }
44、 预览采集
45、 点击右上角预览采集,双击任意翻页链接,检查商品信息是否成功抓取,所示。
46、 配置好模板并确认预览无误后,即可开始采集数据。
47、 先创建数据采集表格。
48、 选择数据建表功能,进入表单列表找到对应模板的表单,在关联数据表中点击创建,自定义表名并命名为jingdong(注意名称不可使用数字或特殊符号),确认无误后点击确定完成操作。
49、 创建完毕,选中数据表。
50、 进入数据采集界面,选定任务并勾选,随后点击开始采集按钮即可启动采集流程。
51、 在中选择数据表,可查看采集信息并支持导出功能。
52、 导出文件的打开效果所示
