写点什么

【从零开始学爬虫】采集当当网图书商品信息

发布于: 2 小时前
【从零开始学爬虫】采集当当网图书商品信息

l 采集网站

【场景描述】采集当当网计算机类中的图书信息。

【源网站介绍】当当(www.dangdang.com)是全球知名的综合性网上购物商城,由国内著名出版机构科文公司、美国老虎基金、美国 IDG 集团、卢森堡剑桥集团、亚洲创业投资基金(原名软银中国创业基金)共同投资成立,于美国时间 2010 年 12 月 8 日在纽约证券交易所正式挂牌上市,成为中国第一家完全基于线上业务、在美国上市的 B2C 网上商城。

【使用工具】前嗅 ForeSpider 数据采集系统,点击下方链接可免费下载

http://www.forenose.com/view/forespider/view/download.html


【入口网址】

http://category.dangdang.com/cp01.54.00.00.00.00.html

【采集内容】

采集当当网中的计算机类中的图书信息,包括所属一级分类、二级分类、书名、简介、作者、出版社、出版时间、价格、编辑推荐、内容简介、作者简介、目录、页面网址等。




【采集效果】如下图所示:



l 思路分析

配置思路概览:



l 配置步骤

1. 新建采集任务

选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,【任务名称】自定义即可,点击下一步。



选择列表链接,点击完成按钮,即创建任务完成。

 


2.获取分类链接

①采集预览,查看页面所有链接,查找计算机分类链接的规律,发现所有与计算机相关的分类的链接规律为:http://category.dangdang.com/cp01.54.+数字串+.00.00.00.html

 


②所以使用地址过滤的方法,过滤链接为以下规律的链接:http://category.dangdang.com/cp01.54.\d.00.00.00.html   

其中\d 表示数字串,点击保存,重新测试,计算机分类链接就筛选出来了。

 


3. 抽取图书商品链接

①新建一层模板 02,并新建两个链接抽取,第一个链接抽取抽取商品页链接,第二个抽取翻页链接。



可分别修改名称为:列表链接抽取和翻页链接抽取。



②选择任意一条分类链接,并粘贴到模板 02 的示例地址处,点击右上角保存按钮。

 


③双击内置浏览器空白处,内置浏览器显示该页面。

 


④采集预览,双击任意一条分类链接,进入图书商品列表页,查看页面链接,观察图书链接规律,发现图书商品链接规律为:

http://product.dangdang.com/+数字串+.html

⑤设置地址过滤,过滤规律为http://product.dangdang.com/\d.html\e 的链接,其中\d 表示数字串,\e 表示链接结束。采集预览,图书商品链接已抽取到。

 


4.抽取翻页链接

采集预览,双击任意一条分类链接进入分类页,观察翻页链接,发现翻页链接中都含有:http://category.dangdang.com/pg,使用地址过滤方法,过滤地址中含有:http://category.dangdang.com/pg的链接。采集预览如下图所示:

 


5.抽取图书商品数据

①新建一个抽取模板,在其下新建一个数据抽取,具体操作如下所示:

 


②数据建表,按照下图所示建数据表。(注意字段属性等应严格按照下图进行设置)

 


③将新建好的数据表,关联到模板中去,如下图所示:

 


④填写示例数据,采集预览,复制任意一条图书商品链接。

 


将链接粘贴到本模板示例地址中,并双击内置浏览器空白部分,加载本链接。

 


⑤关联模板

模板 02 中的列表链接抽取,关联模板 03,这样采集到的图书商品链接会到模板 03 进行数据抽取。

 


模板 02 中的翻页链接抽取,关联模板 02,这样采集到的翻页链接会继续在模板 02 中进行列表链接抽取。

 


⑥数据抽取-可视化抽取部分字段

Class1&class2 使用字段定位取值的方法,进行取值,具体操作如下所示:

 



Title 取值同上



Introduct、Autho、publish、pubtime、price 取值同上

 






⑦数据抽取—脚本抽取部分字段

Recommend 后边的字段对应的数据不在页面源码中,所以用定位取值取不到。

接下来我们用浏览器打开该示例地址,查看 recommend 等字段对应的数据在哪个请求中。

点击 F12,查看每个请求中返回的内容,发现 recommend 等内容在下图所示请求中。

 


发现该请求的链接是:

http://product.dangdang.com/index.php?r=callback%2Fdetail&productId=29267036&templateType=publish&describeMap=01000031459%3A1&shopId=0&categoryPath=01.54.06.23.00.00

观察发现其规律为:

http://product.dangdang.com/index.php?r=callback%2Fdetail&productId=+id+&templateType=publish&describeMap=01000031459%3A1&shopId=0&categoryPath=01.54.20.00.00.00";

查看请求中的返回内容,发现文本内容都被 Unicode 转译。

 


使用在线转码工具能够转译为中文。

 


在源码中,发现 id 为【abstract-all】的内容是编辑推荐(recommend 字段)。

 


同理,id 为【content-all】的内容是内容简介(content 字段);

id 为【catalog-show-al】的内容是目录内容(booklist 字段);

故在 recommend 字段创建脚本教程如下所示:



脚本文本如下所示:

var id=URL.urlname.Middle(".com\/",".html");		//从网址中拿到商品IDvar ur = "http://product.dangdang.com/index.php?r=callback%2Fdetail&productId="+id+"&templateType=publish&describeMap=01000031459%3A1&shopId=0&categoryPath=01.54.20.00.00.00";
var doc = EXTRACT.OpenDoc(CHANN,ur); //通过第2行拼出的请求地址,打开请求(必须与CloseDoc成对使用)var str = doc.GetDom().GetSource().ToStr(); //取请求正文->取正文源码->转换成字符串类型
jScript js; //定义一个js变量,用于存储json文件var json=js.RunJson(DOM.UnEscape(str,1)); //将已转换成字符串的请求正文,转换成json格式,并用UnEsCape()方法转码(从Unicode编码转化成GBK)
var html = OpenDom(json.data.html,ur, false); //将json中包含着的HTML部分取出来,并转变为DOM树结构(必须与CloseDom成对使用)var recommend=html.GetTextAll(html.FindId("abstract-all").next); //从DOM树中找到该字段的节点,将内容取出来
REC.content = html.GetTextAll(html.FindId("content-all").next); //由于当前打开的请求正文中,也包含了其他字段,为了节约效率,定义一个当前记录集对象,将其他字段一并取出REC.author_info = html.GetTextAll(html.FindId("authorIntroduction-all").next); //同上REC.booklist = html.GetTextAll(html.FindId("catalog-show-all").next); //同上
CloseDom(html); //关闭一个由OpenDom打开的dom树EXTRACT.CloseDoc(doc); //关闭打开的采集文档return recommend;
复制代码

 ⑦采集预览,双击进入下一层,知道打开数据页,抽取到数据,表示配置成功。

 


l 采集步骤

模板配置完成,采集预览没有问题后,可以进行数据采集。

①首先要建立采集数据表:

选择【数据建表】,点击【表单列表】中该模板的表单,在【关联数据表】中选择【创建】,表名称自定义,这里命名为【dangdang】(注意命名不能用数字和特殊符号),点击【确定】。创建完成,勾选数据表,并点击右上角保存按钮。



②选择【数据采集】,勾选任务名称,点击【开始采集】,则正式开始采集。

 


③采集结束后,可以在【数据浏览】中,选择数据表查看采集数据,并可以导出数据。

 



④导出的文件打开如下图所示:

 


温馨提示:采集过程中可能会遇到封 ip 的情况,如果您配置好后没有采集到数据,可购买适量代理 ip 进行采集。


l 前嗅简介

前嗅大数据,国内领先的研发型大数据专家,多年来致力于大数据技术的研究与开发,自主研发了一整套从数据采集、分析、处理、管理到应用、营销的大数据产品。前嗅致力于打造国内第一家深度大数据平台!

用户头像

还未添加个人签名 2020.11.06 加入

前嗅大数据,企业级大数据供应商。www.forenose.com

评论

发布
暂无评论
【从零开始学爬虫】采集当当网图书商品信息