按照上一讲的代码,最后的json是这样子的。
![](https://i-blog.csdnimg.cn/blog_migrate/df1c49724a043e14292ee7a9e9adbece.png)
显然和我们想要的结果不一样,你可以去上一讲看看我们的结果应该是什么样的。在说问题出在哪里之前,我们先来试一个东西,,删掉一个ms。
![](https://i-blog.csdnimg.cn/blog_migrate/e30ad10f6c5604c70de4aeeab0d689dc.png)
![](https://i-blog.csdnimg.cn/blog_migrate/6038a14f723f6dcd1fe1967e5489095b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c4b342f652ab621a822b197fa235310d.png)
发现出错了,错误代码就是因为少了ms,说明这里一定要注意items的定义和从spider传往items pipelines的内容一定要匹配。
![](https://i-blog.csdnimg.cn/blog_migrate/578a4a6f75b559348e5cff86020515fd.png)
下面就来找错误在哪里,首先title和url顺序反了,这个好解决,不是问题,关键在于输出的东西不是我们的预期,我们一点一点调试吧,首先在scrapy shell 的结果是很好的,说明问题应该出在我们之后修改spider的时候。先仔细的看一下,如果spider里这么写。
![](https://i-blog.csdnimg.cn/blog_migrate/a3dd1538aa92f5f4806c93c879d2d7e9.png)
爬的时候其实是有问题的,因为第二个resourse网站根本就没有去爬。
![](https://i-blog.csdnimg.cn/blog_migrate/79ea16e026607acec1bf4189a5f8249f.png)
然后换一下顺序。
![](https://i-blog.csdnimg.cn/blog_migrate/df771af952dde9a93ac69429c86f65b7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b418f75ad06d71e4eec575276130467d.png)
就是两个网站都爬。后面也许会说到这里的原因,如果没有,那么就是我自己水平也有限了。
输出一下。
![](https://i-blog.csdnimg.cn/blog_migrate/7fbc1462826d597b2e6cd6d8302eb36d.png)
结果如下。
![](https://i-blog.csdnimg.cn/blog_migrate/62feab1c4abc1ddbdb84da5dc53b168c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7461ef5f8556a0d6b2c103cc7680990a.png)
你可以去对比,是没有问题的。关于这个return呢,我这里放两个gif,你们就知道怎么回事了。
![](https://i-blog.csdnimg.cn/blog_migrate/2d4e4f571d67ebf94aab76e893998223.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/2e680dd438788a5d7bd00b2d477a2d87.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/96fff71c1c5724260443d529990bf62e.png)
对应是
![](https://i-blog.csdnimg.cn/blog_migrate/bf7ce50f4e4dddae0dc52bf116e2cfed.png)
在看一下:
![](https://i-blog.csdnimg.cn/blog_migrate/96ca47fe41cdd28a098ea0be128fc9d5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/27c23c5592b95df7a8c6307c43d7aa08.png)
![](https://i-blog.csdnimg.cn/blog_migrate/671a25acd0137eab773e73b520746064.png)
如果不加return c,导出会是什么结果呢?
![](https://i-blog.csdnimg.cn/blog_migrate/8ff124c57fb92b88d34ba63bc77a54de.gif)
说明为了导出结果,parse函数是必须有return 的,并且导出的不是一次的c,因为如果只是一次的c,那么后面的book会把前面的resourse覆盖的。导出的是所有返回的c。
由于最近在学linux,python的课程先放一下,我就先把上一讲里scrapy出现的问题处理了一下,这段时间可能都会发一些linux的文章了。