2.爬取电商数据

本文介绍了网络爬虫的基本概念和用途,并详细讲述了如何使用Java爬虫框架WebMagic爬取电商评论数据。内容包括WebMagic的组件、工作原理、爬取策略以及京东商品评论的页面结构分析。通过示例展示了如何设置爬虫参数,模拟用户行为,并编写爬虫代码抓取评论数据。
摘要由CSDN通过智能技术生成

使用webmagic爬取电商评论数据

字体:

1.什么是爬虫

网络爬虫,也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。其目的一般为编纂网络索引。

网络搜索引擎等站点通过爬虫软件更新自身的网站内容或其对其他网站的索引。网络爬虫可以将自己所访问的页面保存下来,以便搜索引擎事后生成索引供用户搜索。

爬虫访问网站的过程会消耗目标系统资源。不少网络系统并不默许爬虫工作。因此在访问大量页面时,爬虫需要考虑到规划、负载,还需要讲“礼貌”。 不愿意被爬虫访问、被爬虫主人知晓的公开站点可以使用robots.txt文件之类的方法避免访问。这个文件可以要求机器人只对网站的一部分进行索引,或完全不作处理。

互联网上的页面极多,即使是最大的爬虫系统也无法做出完整的索引。因此在公元2000年之前的万维网出现初期,搜索引擎经常找不到多少相关结果。现在的搜索引擎在这方面已经进步很多,能够即刻给出高质量结果。

爬虫还可以验证超链接和HTML代码,用于网络抓取。

2.利用爬虫可以做哪些有趣的事

1.爬取古诗文 http://so.gushiwen.org/mingju/ju_4652.aspx

view plain copy

1. 《小松》 唐代 杜荀鹤  

2. 自小刺头深草里,而今渐觉出蓬蒿。  

3. 时人不识凌云木,直待凌云始道高。  

2.爬取电商数据: 如意淘、惠惠购物助手、西贴、购物党http://www.xitie.com/

3. 爬取社会化媒体 http://ys.8wss.com/

4.爬取金融数据,量化分析

5.爬取新闻数据,舆情、 文章聚合等

3.常见的爬虫框架

1.Java语言开发的分布式爬虫:Nutch

分布式爬虫,主要是解决两个方面的问题:①海量URL管理 ②网速。

Nutch一般应用于搜索引擎

Nutch依赖于Hadoop运行

2.JAVA语言开发的单机爬虫:Crawler4j、WebMagic、WebCollector

3.Python语言开发的单机爬虫:scrapy、PySpider

 

4.自己动手,编写爬虫

4.关于webMagic

WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。

WebMagic的设计参考了业界最优秀的爬虫Scrapy,而实现则应用了HttpClient、Jsoup等Java世界最成熟的工具,目标就是做一个Java语言Web爬虫的教科书般的实现。

网站:http://webmagic.io/

中文文档:http://webmagic.io/docs/zh/

5.爬虫架构

WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。

Spider则将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。

WebMagic总体架构图如下:

 

组件讲解

1.Downloader

Downloader负责从互联网上下载页面,以便后续处理。WebMagic默认使用了Apache HttpClient作为下载工具。

2.PageProcessor

PageProcessor负责解析页面,抽取有用信息,以及发现新的链接。WebMagic使用Jsoup作为HTML解析工具,并基于其开发了解析XPath的工具Xsoup。

在这四个组件中,PageProcessor对于每个站点每个页面都不一样,是需要使用者定制的部分。

3.Scheduler

Scheduler负责管理待抓取的URL,以及一些去重的工作。WebMagic默认提供了JDK的内存队列来管理URL,并用集合来进行去重。也支持使用Redis进行分布式管理。

除非项目有一些特殊的分布式需求,否则无需自己定制Scheduler。

4.Pipeline

Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。WebMagic默认提供了“输出到控制台”和“保存到文件”两种结果处理方案。

Pipeline定义了结果保存的方式,如果你要保存到指定数据库,则需要编写对应的Pipeline。对于一类需求一般只需编写一个Pipeline。

6.爬取策略

1.并行策略

一个并行爬虫是并行运行多个进程的爬虫。它的目标是最大化下载的速度,同时尽量减少并行的开销和下载重复的页面。为了避免下载一个页面两次,爬虫系统需要策略来处理爬虫运行时新发现的URL,因为同一个URL地址,可能被不同的爬虫进程抓到。

2.重新访问策略

网站的属性之一就是经常动态变化,而爬取网站的一小部分往往需要花费几个星期或者几个月。等到网站爬虫完成它的爬取,很多事件也已经发生了,包括增加、更新和删除。在搜索引擎的角度,因为没有检测这些变化,会导致存储了过期资源的代价。

3.平衡礼貌策略

爬虫相比于人,可以有更快的检索速度和更深的层次,所以,他们可能使一个站点瘫痪。不要说一个单独的爬虫一秒钟要执行多条请求,下载大的文件。一个服务器也会很难响应多线程爬虫的请求。就像Koster所注意的那样,爬虫的使用对很多任务作都是很有用的,但是对一般的社区,也需要付出代价。使用爬虫的代价包括:

网络资源:在很长一段时间,爬虫使用相当的带宽高度并行地工作。

服务器超载:尤其是对给定服务器的访问过高时。

质量糟糕的爬虫,可能导致服务器或者路由器瘫痪,或者会尝试下载自己无法处理的页面。

个人爬虫,如果过多的人使用,可能导致网络或者服务器阻塞。

对这些问题的局部解决方法是漫游器排除协议(Robots exclusion protocol),也被称为robots.txt议定书

4.选择策略

链接跟随限制

URL规范化

路径上移爬取

主题爬取

7.分析电商网站源码结构

1.使用Chrome浏览器,打开京东官网,随便选择一款商品https://item.jd.com/4432058.html

按键盘上的F12键,进入开发者工具页面。点击开发者工具里的“NetWork”,再点击商品详情页里的“商品评论”,就可以看到浏览器请求的数据文件。

 

利用Filter过滤网址,输入productPageComments.action,查找相关的网址请求,此请求就是获取商品评论内容。

 

我们可以看到右侧,显示出了10条评论。

 

2.查看productPageComments.action这个链接,后面的参数

完整链接:https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv28421&productId=4432058&score=0&sortType=5&page=100&pageSize=10&isShadowSku=0&fold=1

请求url为:https://club.jd.com/comment/productPageComments.action

请求时参数:callback=fetchJSON_comment98vv28421&productId=4432058&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1

1. callback=fetchJSON_comment98vv28421  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值