网络爬虫—scrapy项目中Request()的meta参数详解

导读:本篇文章讲解 网络爬虫—scrapy项目中Request()的meta参数详解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.scrapy项目中Request()的参数meta的解释

Request的参数meta作用是将meta中的信息传递个下一个回调函数,使用过程可以理解为:

'''
如果回调函数中,需要用到上一个函数中的数据,
那我们可以把该数据赋值给变量meta,让它传给回调函数,
但是meta只接受字典类型的数据,
所以,我们要把待传递的信息改成字典形式,即:
meta = {'key1': 'value1', 'key2': 'value2'}

如果想在下一个函数中取出value1:
    value = response.meta['key1']
得到meta:
    meta = response.meta
'''

2.举例加深理解

#在spider爬虫中:
class TaobaoSpider(scrapy.Spider):
    name = ['taobao']
    allowed_domains = ['www.taobao.com']
    def parse1(self,response):
        '''
        需要知道的是item是一个字典
        '''
        item = TextItem()
        for product in response.css('......').extract():
            item['title'] = product.css('......').extract_first()
            item['price'] = product.css('......').extract_first()
            url = product.css('......').extract_first()
            yield = scrapy.Request(url=url, meta={'item':item} callback=self.parse2)
            '''
            比如我们要爬取淘宝上的商品,我们在第一层爬取时候获得了标题(title)和价格(price),
            但是还想获得商品的图片,就是那些点进去的大图片,假设点进去的链接是上述代码的url,
            利用scrpy.Request请求url后生成一个Request对象,通过meta参数,把item这个字典赋值给meta字典的'item'键,
            即meta={'item':item},这个meta参数会被放在Request对象里一起发送给parse2()函数。

            '''
    def parse2(self,response):
        item = response.meta['item']
        for product in response.css('......').extract():
            item[imgae] = product.scc('......').extract_first()
        return item
        '''
        这个response已含有上述meta字典,此句将这个字典赋值给item,完成信息传递。
        这个item已经和parse中的item一样了
        之后我们就可以做图片url提取的工作了,
        数据提取完成后return item ,这样就完成了数据抓取的任务了。

        '''

参考文献:https://blog.csdn.net/wumxiaozhu/article/details/81368689

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/84801.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!