Selenuim Java 借用某宝某地区的电商数据

项目背景

  因前段时间公司有需求,想得到我们公司所在地区(四线城市)的电商企业的销售额排名情况,时间紧急,调研无
  果,花费RMB若干买了某工具的数据服务(避免打广告的嫌疑,就不提该工具的名称了,网页版的),勉强得到些数
  据,在我看来效果并不理想。恰逢近期公司想做大数据项目,需要用到爬虫,所以趁此机会研究一下怎么抓取到这个
  数据。

踩坑过程


  1. 最先使用的是火车(头)采集器,配置过程不算很麻烦,只是效果实在不敢恭维,稳定性很差,同一个链接地址,一会儿能采集到数据,一会儿采集不到,完全摸不到套路,果断弃坑。
  2. 然后使用的是八爪鱼采集器,配置不很复杂,网上有不少配置教程,也有些简易的模板可直接使用,功能比较强大,自带浏览器功能,只要是页面上能看到的内容基本上都能抓取到。就是数据抓取后导出时需要付费(以积分形式,注册账号给2000,之后花RMB购买)。还有就是在操作的过程中延时不能很好地控制(也许是我不会配置这个),造成触发了某宝的反爬机制,弹出了登录验证,再之后就不知道怎么配置去绕过这个验证了,不得已弃坑。
  3. 最后接收到领导的要求和客观事实的存在,研究怎么自己开发实现这样的功能。经过将近一周的努力,现在基本可以通过指定的验证,进行数据的抓取。
    (声明一下,最初是从网上找了个项目MyCrawler,现在的功能是在该项目的基础上实现的,只是使用到了项目包结构,没有使用内部代码,实在是懒得自己建项目,弄结构了。
    原项目地址:https://www.cnblogs.com/sanmu...。
    如果原作者介意的话,请联系我删除不相关代码,联系方式我会放在文末,谢谢。)
    1)刚下载时项目中使用后得不到某宝的数据,因为数据是动态生成的。
    2)在项目中使用Jsoup去获取数据,也是获取不到动态生成的数据。
    3)使用HttpUnit去获取数据,某宝的取不到,用某度的首页试了下,是可以的。原因没找到,也不知道该怎么去找,
    反正就是response里空的,啥都没有,很崩溃地弃坑了。
    4)终于说到今天的主角了,在网上找了N久,最后找到了Selenium。顺便说下,在此之前还找到了JxBrowser,不
    过用不明白,果断就算了。话说后来他们客服还打电话询问情况来着。。。


开发过程

  1. 开发环境

    1)Win 10专业版 64位
    2)JDK 1.8
    3)Intellij IDEA Ultimate 2016.3
    4)Maven用的IDEA自带的Bundled (Maven 3)
    5)Firefox 61 中文版
    6)Selenium 3.11.0
    7)geckodriver 0.20.0
  2. 开发思路

     由于反爬机制的存在,为避免数据抓到到一部分,被迫中断,所以采取分步抓取的方式。
     1)打开某宝首页,搜索店铺,关键字为想要数据的地区(至于我用的哪个地区,代码里有的),抓取并保存
     店铺列表。需要过滤,因为搜索结果中会包含不相关的店铺。我是根据店铺名称、卖家、地区中包含特定关键
     字来过滤的。
     2)把店铺列表的url做为输入,循环店铺列表url并进入,为方便操作,这一步要拼接部分地址,进入的是该店铺
     所有宝贝列表页面,而且是按销量排序后的。抓取并保存宝贝列表。
     3)把宝贝列表的url做为输入,循环宝贝列表url并进入,抓取交易量数据并保存。
  3. 开发进度

     目前开发出来的是开发思路中的步骤1)和2),其中步骤1)不会出现登录验证,步骤2)会出现。目前代码
     中包含登录验证部分。后续的部分会继续开发。目前代码运行中,在抓取宝贝列表的数据,400多个店铺要抓
     取还是需要不少时间的,为减少登录验证弹出的可能,设定了宝贝翻页间隔30秒。
     有需求代码的同学可在评论中留下邮箱,我看到了会打包邮寄的。
    
    

联系方式

邮箱:[email protected]
也可以加QQ交流。

你可能感兴趣的:(java,电商,网页爬虫,selenium)