全部产品
云市场

第四课:外置chrome浏览器使用方法

更新时间:2019-09-18 15:38:57

本案例通过淘宝商品信息抓取的实例来教大家如何使用外置chrome浏览器搭建应用。

1.场景介绍

在淘宝网站输入商品关键字,自动抓取所有分页的商品信息,如商品名称、价格、店铺、销量等,并将其存储到数据表格以便查看。
教程内容:本教程包含三节内容,分别为页面搜索循环切换分页抓取并存储信息

2.新建应用

点击【新建编码模式应用】,选择【机器人类型】,再点击【确认新建】
此处有三种机器人类型以及自定义SDK可供选择,具体介绍见【此处应有链接】。

创建应用.mov (1.38MB)image.png

image.png

3.控件录制

代码编辑区使用chrome浏览器打开 淘宝 网址 www.taobao.com ,点击调试运行。点击 定位网页元素 ,录制 输入框搜索 按钮。

    1. 点击定位网页元素按钮
    1. 在弹出录制对话框中点击 捕获控件 按钮(或按键盘 F2 键)
    1. 将鼠标移动到网页中的输入框中并点击。录制完成,点击高亮控件获取控件个数验证动作进行验证。
    1. 在捕获控件对话框中输入控件名称(输入框)和所属分组(淘宝)。将下方代码复制到代码编辑区。
    1. 点击 继续捕获控件 按钮继续录制。
    1. 将鼠标移动到网页中的搜索按钮上并点击。录制完成,点击高亮控件获取控件个数验证动作进行验证。
    1. 在捕获控件对话框中输入控件名称(搜索)和所属分组(淘宝)。将下方代码复制到代码编辑区。
    1. 点击 保存 按钮退出录制程序。

录制搜索全.mov (58.39MB)录制宝贝价格、名称、链接、店铺名称、购买人数、下一页等控件。用于信息获取。
录制控件思路:

  • 1.例如录制价格控件,由于每个商品结构类似,通过录制相似控件可获取到该页面所有宝贝的价格。
  • 2.图中价格的控件最多为48个。所以以下控件皆参照此数量进行录制。
  • 3.可通过参数index变量获取到每一个控件的信息。
  • 4.控件个数过多时,修改属性信息,从下向上依次修改,修改一次,验证一次。

录制注意点:

  • 录制宝贝名称控件时,由于计划使用该控件获取href属性即url,所以要录制到a标签,并非div标签。
  • 捕捉相似控件时,若不存在相似控件,则需重新录制控件,以保证控件准确性。
  • 修改控件属性时,要修改一次验证一次。

录制控件.mov (171.37MB)

4.界面设计

此次使用 数据视图 进行保存数据。

  • 创建列,并修改列名。
  • 创建数据视图对象。
  • 增加一行。
  • 将数据以行和列为限制写入数据视图中。数据视图.mov (45.56MB)

5.代码编写

上文中展示了一种代码复制方式—— 复制录制控件时下方代码
下面视频中将再次展示两种代码编辑方式。手动编辑代码 **快捷选择模块编辑代码**
由于rpa支持中文作为变量名,所以视频中会使用中文作为变量,增加可读性。
代码逻辑:

  • 获取控件个数,用于设置循环次数获取每一个控件的值。
  • 设置循环,每次循环获取每个控件的信息。
  • 将数据写入数据视图展示。

代码编辑.mov (85.11MB)此时已获取完成一个页面的数据,下面增加下一页的录制和代码编辑,获取更多页的宝贝数据。
此视频展示录制下一页控件,代码编辑,以及效果展示。

下一页.mov (129.9MB)

6.完整代码展示

  1. from rpa.core import *
  2. from rpa.utils import *
  3. import rpa3 as rpa # 使用V3引擎
  4. def start():
  5. # 在此处开始编写您的应用
  6. page = rpa.chrome.create("www.taobao.com")
  7. page.input('输入框', '盆栽', index = 1, simulate = False, replace = True)
  8. page.click('搜索', index = 1, simulate = True, button = 'left')
  9. # 此时发现在点击搜索按钮以后页面跳转,要加载一段时间,我们暂时使用sleep测试
  10. sleep(3)
  11. # 创建数据视图
  12. datat = rpa.datatable_pkg.Datatable()
  13. # 设置循环用于控制获取页数
  14. for y in range(10):
  15. # 获取控件个数,用于控制循环次数
  16. 个数 = page.element_count("价格")
  17. for i in range(1, 个数+1):
  18. # 通过变量i获取每一个控件的信息
  19. 价格 = page.text("价格", index=i)
  20. 付款人数 = page.text("付款人数", index=i)
  21. 宝贝名称 = page.text("宝贝名称", index=i)
  22. 宝贝链接 = page.attr("宝贝名称", attrname="href", index=i)
  23. 店铺名称 = page.text("店铺名称", index=i)
  24. 发货地 = page.text("发货地", index=i)
  25. # 增加一行
  26. row = datat.addrow()
  27. # 根据行号以及列名写入数据
  28. datat[row]["宝贝价格"] = 价格
  29. datat[row]["宝贝名称"] = 宝贝名称
  30. datat[row]["宝贝链接"] = 宝贝链接
  31. datat[row]["店铺名称"] = 店铺名称
  32. datat[row]["购买人数"] = 付款人数
  33. datat[row]["发货地"] = 发货地
  34. page.click('下一页', index = 1, simulate = True, button = 'left')
  35. # 由于点击下一页之后页面加载一段时间,我们暂时使用sleep
  36. sleep(3)