各位好,相信你已经看了前面我写的京东和苏宁图书的爬虫了,那么既然爬图书,我就把时下热门的图书网站都爬完!今天来给大家讲解一下当当图书的爬虫写法,实际操作和前面的基本都差不多,主要是要会抓包,分析想要的东西在哪里,怎么找到等,接下就进入正题吧!

第一步:网站分析

首先,我们用Chrome浏览器打开当当图书网主页:http://book.dangdang.com/,我们发现当当图书和上一次爬取的京东图书不一样,分了三层,例如:教育->教材->研究生/本科/专科教材这样的三层,那我们就一层一层的写下去就好了,也就是多个for循环的事,如下图:

接下来开始抓包,我们就从图书分类的教育这里入手吧,我们按照:教育->教材->研究生/本科/专科教材 这三部一步一步进行抓包。使用选择工具点到大标题教育,在Elements中出现如下图:

我们将鼠标移动到标签<div class="con flq_body">,发现菜单栏全部变蓝,说明我们要找的信息都在这个标签下面:

也就是在Elements中,教育类是在标签<div class="con flq_body">下的<div>标签下<dl>标签下的<dt>标签下的<span>里面,而所有的分类在<div class="con flq_body">下的<div class="level_one">标签里面,如下图:

在上面我们找到了Elements中大分类:教育 的位置,接下来,我们得验证在网页的响应中也有这样的信息才行,因此我们点击Network,刷新一下网页,然后点击左下角的http://book.dangdang.com这个网站,最终出现如下图:

然后Ctrl+f 出现搜索框,我们搜索一下con flq_body这个标签,如下图,我们发现不好看对应信息:

这个时候我们就在网页上点击反键,然后查看网页源代码,然后继续Ctrl+f 出现搜索框,我们搜索一下con flq_body这个标签,这样就比较容易对比了:

因为我们选择走教育->教材->研究生/本科/专科教材这条路线,所以我们朝下拉一下,找到教育的分类,然后经过与Elements对比,发现对应的标签都一样,这样我们就可以按照Element写代码了。

这样大分类找出来了,接下来找:教育->教材->研究生/本科/专科教材这条路线中的中分类:教材。我们用选择工具选中教材,发现在Elements,中它在<div class="con flq_body">下的<div>标签下<dl>标签下的<dd>标签下的<a>标签里面,同样的对照Networks,我们发现标签也是一样的,这样我们就找到了中分类了,如下图:

现在我们需要找教育->教材->研究生/本科/专科教材这条路线中的研究生/本科/专科教材这部分类容位置,我们经过在Elements中查找,发现它在如下图的位置,也是在<div class="con flq_body">的子标签里面,接着对比分析Network,内容也是一样的:

到这里我们首页就分析完了,我们提取数首页的大中小标题,以及小标题的href就行了,接下来就是请求小标题的href,比如请求:教材->研究生/本科/专科教材的href"http://category.dangdang.com/cp01.49.01.00.00.00.html"

我们继续分析这个网页,先进行抓包,来找到我们想要提取的信息,比如图书名,内容简介,出版时间,出版社,作者,价格等等。用选择工具随便选一本图书,发现它们都是在<ul class='bigimg' id='component_59'>这个标签下的<li>标签里面

然后根据我们要爬取的信息,都在上面这个标签里面找到就行了,然后和Network进行对照,是否一样,很幸运的事,我们想找的内容在网页的响应中都有,包括价格,不需要构造额外的请求,这样减轻了我们的代码量。

这也我们把这一页的内容都找到了,只需要构造翻页请求就行了,我们把网页拉到最下面,寻找翻页的位置,用选择工具选中,下一页就在<ul name='Fy'>标签下:

我们在Network中搜索下FY,如下图:

发现和Elements中一样的,直接可以找到下一页的href,到此我们的网页都分析完了,下面我分享一下我的代码

第二步:代码分享

items.py代码:

spider代码dang.py:

settings.py:

第三步:成果分享

40s爬取了4.6W条数据,大概3500本书左右

因为我要数据没什么用,所有就没存在数据库中,也没用其他的反爬措施,只是一些效果的展示,主要还是要学习分析网站的思路,对了,这个代码还可以改成scrapy-redis分布式爬虫,只需要添加几行代码就可以了。

提取网页中的href 爬虫_教你一步一步实现当当图书爬虫相关推荐

  1. HtmlParser提取网页中的纯文本信息

    转载自   HtmlParser提取网页中的纯文本信息 HTMLParser 一个解析web页面的开源类库.           准备学习下搜索方面的技术,就学习了些网络爬虫的知识.最近一直在一个点上 ...

  2. 利用正则表达式提取网页中Table内的数据

    利用正则表达式提取网页中Table内的数据 using System; using System.Collections.Generic; using System.Linq; using Syste ...

  3. python提取网页中表格数据_Python2 BeautifulSoup 提取网页中的表格数据及连接

    网址:http://quote.eastmoney.com/ce- 要做的是提取网页中的表格数据(如:板块名称,及相应链接下的所有个股,依然是个表格) 暂时只写了这些代码: import urllib ...

  4. 如何提取网页中的blob加密视频

    如何提取网页中的blob加密视频 一.场景 一些网站的视频为了防止下载,通常会采用blob加密的做法,打开浏览器控制台F12后,是这样的: 视频网址:"blob:https://us.flu ...

  5. 正则表达式提取网页中的网址

    正则表达式提取网页中的网址,并用匿名函数 #coding=utf-8 import res="https://www.baidu.com/message.asp?id=35" re ...

  6. Delphi提取网页中的图片

    无意中,在csdn论坛中看到关于"提取网页中的图片资源"的帖子,特摘抄之. simonhehe提供相关代码如下: procedure TfrmMain.DomImg2Image(w ...

  7. 一次性提取网页中所有图片的代码

    一次性提取网页中所有图片的代码 打开有图片的网页,在地址栏中输入: javascript:Ai7Mg6P='';for%20(i7M1bQz=0;i7M1bQz<document.images. ...

  8. php提取网页mp3,怎么提取网页中的音乐|下载网页中的音乐 网页音乐提取工具及使用教程分享...

    相信很多人都比较了解怎么下载网页上的视频吧,那么现在怎么提取网页中的音乐或者说怎么下载网页中的音乐 ,嗯~ o(* ̄▽ ̄*)o ,不懂的孩纸,路过走过不要错过啦,快来看看小编分享的网页音乐提取工具及使 ...

  9. 快速提取网页中的文字

    有时需要提取网页中的文字.除了使用"复制+粘贴"的方法外,还有其他办法.          打开"https://www.easyscrape.xyz/"后,在 ...

  10. java怎么写网络爬虫_教你如何编写简单的网络爬虫

    一.网络爬虫的基本知识 网络爬虫通过遍历互联网络,把网络中的相关网页全部抓取过来,这体现了爬的概念.爬虫如何遍历网络呢,互联网可以看做是一张大图,每个页面看做其中的一个节点,页面的连接看做是有向边.图 ...

最新文章

  1. Oracle 冷备份
  2. 高等专科学校计算机,理工类计算机专业较好的高等专科学校
  3. javascript 手机手势动作touch触屏原理分析
  4. mysql5.6 memcached_MySQL 5.6 安装配置InnoDB memcached Plugin
  5. jQuery学习: 实现select multiple左右添加和删除功能
  6. android中的回调简单认识
  7. 网上花店php语言添加信息,Laravel 添加多语言提示信息的方法
  8. mysql 5.7 root 修改密码_Mysql5.7忘记root密码及mysql5.7修改root密码的方法
  9. linux ftp 服务配置
  10. 代码:细化法+灰度重心法提取线激光条纹中心线(CPP+OpenCV)
  11. UWB定位原理详细介绍
  12. c语言中srand的作用,C++随机数(rand和srand)函数用法详解
  13. 超低功耗MCU的选择方法
  14. 百度地图和51地图API应用开发
  15. 音频信号的数字化及压缩编码
  16. Eclipse插件2
  17. Java 多线程的应用场景
  18. 杭电信工计算机专业浙江省排名第几,2017杭州电子科技大学专业排名_杭州电子科技大学专业排行榜(2)...
  19. sigaction函数中 SA_NODEFER与sa_mask之间
  20. Python爬虫入门教程 18-100 煎x网XO图片抓取

热门文章

  1. 在小树林飞也能又快又稳,这是港科大沈劭劼组的「猛禽」无人机重规划框架...
  2. [jQuery]计算年龄
  3. Qt容器类之三:通用算法
  4. HTML一片空白, 无法渲染: Empty tag doesn't work in some browsers
  5. 使用es6制作简单数独游戏
  6. docker常用到的一些命令
  7. STL---vector的内存分配策略
  8. OpenCV学习(十四)之彩色图像RGB通道的分离、合并与显示
  9. 《访问Mat图像中每个像素的值》)
  10. 神经网络高维互信息计算Python实现(MINE)