scrapy测试解析代码的一个小技巧

我们在用scrapy写爬虫解析代码的时候经常会遇到比如xpath解析结果和预期不符合这种情况,如果解析的条目多的话一条一条测又很麻烦,又不能每次都跑一遍爬虫来验证结果正不正确,这样不仅效率低,还增加被封的风险,遇到这种情况我们就可以用scrapy shell来帮我们解决这个问题,scrapy自带的shell工具可以让我们实现动态的交互式的开发,例子如下:

首先有了一个网页,比如我的网站:lewism.net
然后用chrome打开,右键,点击检查,打开源码页

接下来比如我们想抓取这些文章的标题,我们在shell里执行命令:

scrapy shell http://lewism.net -L ERROR
(此处-L ERROR是设置输出日志等级为error级别,为了让输出更简洁一些,默认为debug级别,也可以在项目的settings文件里修改LOG_LEVEL字段的值来实现,命令行优先级最高,详情请看这里https://blog.csdn.net/jss19940414/article/details/85291157)
会返回如下结果:

然后比如我们用xpath来解析,先做一些初始化:

接着我们在chrome里点击映射(下图1),并点击想要提取的标题(下图2),具体如下:

然后我们在图中3的位置右键,选择copy,选择xpath(或者其他你用得惯的),如下所示:

然后就会复制到xpath,然后在shell里粘贴进下图所示的位置:

我们可以看到,基本上是不对的,因为我们想要的是标题,但是这里提取的是a标签,所以我们做下修改,改为如下:

就可以提取到想要的标题了(实际场景中大概率需要去掉最后的'[0]'),想要提取其他字段的时候也是以此类推,这样我们就可以较为方便快速的对提取内容进行编写开发了。

ps:其实也可以在jupyter里用requests进行测试