关于Scrapy爬虫框架中meta参数的使用示例演示(下)

2020-11-13 10:15:56 浏览数 (1)

络纬秋啼金井阑,微霜凄凄簟色寒。

/前言/

上一篇文章我们已经了解了meta参数,关于Scrapy爬虫框架中meta参数的使用示例演示(上)接下来我们将先从文章列表页中提取出封面图的URL,然后再一起来感受meta。

/分析过程/

通过与网页信息的交互,我们可以发现封面图存放在一个叫a标签下面,如下图所示。

可以很清楚的看到图片链接的URL,而且之间复制这个URL在网页中进行打开的话,也可以正常访问,如下图所示。像这种图片的URL是存放在第三方服务器上面的,可以正常访问到。

但是也有的时候网站封面图并不是存放在第三方服务器上,并不会将图片的域名呈现出来,如下图所示,如果直接访问URL的话会出现404错误(无可访问资源)。

这种情况默认是该图片的资源加载在当前域名之下的,只需要将网页主域名和图片的URL地址进行连接组合(在代码中通过parse.urljoin()函数进行实现),尔后便可以访问到图片了,如下图所示。

/代码实现/

接下来进行代码实现,下图中的1和2部分的代码都是可以实现这个爬虫逻辑的,从编程的角度,还是建议大家还是多多使用第1种方法,也是经常会用得到的,这是xpath的嵌套使用,该方法减少了代码冗余,而且逻辑实现也很清晰。

将front_img_url取到之后,再将其传给meta,如下图所示。

一般的,当我们在选择器上使用.extract()或者.extract_first(“”)函数之后,该选择器就变成了一个数组,就无法再进行嵌套选择了,所以这里选择将标签块取出来,然后再进行嵌套选择,这也是Scrapy给我们带来的便利之处。

完成好上面的代码之后,便可以进行Debug调试了,这里简单的安利一下Pycharm中关于Debug的两个快捷键F6和F8,F6的作用是继续执行Debug,通常是进入到下一行;F8的作用是跳出当前的Debug,跳至下个断点,在调试的时候经常会用到。这里将断点打在parse_detail()函数这里,一起来看看meta参数是否传递过来了,如下图所示。

通过上图可以看到,在response下,里边有一个meta,可以得知meta参数顺利传递过来了,是一个字典,并且我们可以看到封面图front_img_url的链接已经获取到了,而且在浏览器中可以正常访问到该图片,如下图所示,说明这种传递方式是非常有效的,接下来我们需要在parse_detail()函数中去用一个item接受它。

这里定义变量front_img_url用于接收封面图信息,其传递过来是字典的形式,所以可以用字典的形式去获取,当然也可以用get方法,下面两种方式任选其一均可。

至此,我们已经完成封面图的提取。小伙伴们,关于Scrapy爬虫框架中meta参数的用法你们get到了吗?

/小结/

本文基于上篇meta的理论基础,结合网页分析和代码实现,主要介绍了Scrapy爬虫框架中meta参数的使用示例,希望对大家的学习有帮助。

想学习更多关于Python的知识,可以参考学习网址:http://pdcfighting.com/,或者点击阅读原文,可以直达噢~

0 人点赞