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

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

第一步:网站分析

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

4e80c831faa935570dc7e5f04f46ef8b.png

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

57de37ff10a483a97e38c69548e03ffe.png

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

fa07224407cb9beaf620ac42a82ef840.png

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

02e2d5955b60730e9a08638457657dc6.png

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

8a6c0f04f0fe99e11292e4c6d6cbe599.png

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

739d0d0b45d85993127087d086e58807.png

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

2c01e926c60e22fe2a897e468f77f4b5.png

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

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

95b56725ac76837080711e1327cc955e.png

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

e1b4c42b8427a94c5c25a53ef0daf60f.png

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

229b8e6d60e19a7dfcb5c9770225b74c.png

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

4ef1ba9d6c3544e021f1a933023efa6a.png

2968e86968ebd21a6137e371d6602cb0.png

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

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

5a3edf09e8bb59f8b965f7c536bc3873.png

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

2a228fbc4e1b39f99d5fbc0314e73b0c.png

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

第二步:代码分享

items.py代码:

660ebb222318e4291a813616991a6849.png

spider代码dang.py:

753895e4fc545d1e42aa9fd4cf881aff.png

aefc9199f272d82ecdf7ea003cfb6fa3.png

aac2d6bee94465a540b58fa37348ea03.png

settings.py:

0296617a9fe0646b6752d4df59ad3af6.png

75ffc82cfad94454802010b12eb2cc96.png

第三步:成果分享

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

dadbf008c303bd5f45a6935e8003dd96.png

5d60dbdcceb21f4ca4923046143fbe8f.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值