name = 'doubanzufang'
start_urls = ['https://www.douban.com/group/tianhezufang/discussion?start=50']

def parse(self, response):
    item = ZufangItem()
    node_list = response.css(".olt>tr>td.title")
    for node in node_list:
        item['title'] = node.css("a[href]::attr(title)").extract()[0]
        item['url'] = node.css("a[href]::attr(href)").extract()[0]
        yield scrapy.Request(item['url'], meta={'item': item}, callback=self.parse_detail)

def parse_detail(self, response):
    item = response.meta['item']
    item['poster'] = response.xpath(".//*[@id='content']/div/div[1]/div[1]/div[2]/h3/span[1]/a/text()").extract()[0]
    item['image'] = response.xpath(".//*[@id='content']/div/div[1]/div[1]/div[1]/a/img/@src").extract()[0]
    item['information'] = response.xpath(".//*[@id='link-report']/div[1]/p[1]/text()").extract()[0]
    yield item

确认item['title'],item['url']都能获取到不止一个str
问题:
1:为什么我输出得到的item['title'],item['url']永远是最后一个?yield meta不应该每次都传递过去吗?
2:我想实现获取图1标题,作者以及图2内容,把他们保存在一个item返回,怎么实现?

问题1:应该是item保存的是字典,在for循环外声明的item每次在最后都把前面的更新了,所以url,title永远都是获取最后的值
问题2:将item = ZufangItem()放在for循环内即可解决

引用自:https://blog.csdn.net/q810935819/article/details/82082969

scrapy实现多级页面的抓取时使用meta传递item数据的问题(转)的更多相关文章

  1. Scrapy 使用CrawlSpider整站抓取文章内容实现

    刚接触Scrapy框架,不是很熟悉,之前用webdriver+selenium实现过头条的抓取,但是感觉对于整站抓取,之前的这种用无GUI的浏览器方式,效率不够高,所以尝试用CrawlSpider来实 ...

  2. 网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp)

    转自原文 网易新闻页面信息抓取(htmlagilitypack搭配scrapysharp) 最近在弄网页爬虫这方面的,上网看到关于htmlagilitypack搭配scrapysharp的文章,于是决 ...

  3. [Python] 抓取时光网的电影列表并生成网页

    抓取时光网的电影列表并生成网页 源码 https://github.com/YouXianMing/BeautifulSoup4-WebCralwer 分析 利用BeautifulSoup进行分析网页 ...

  4. [python]初试页面抓取——抓取沪深股市交易龙虎榜数据

    [python]抓取沪深股市交易龙虎榜数据 python 3.5.0下运行 没做自动建立files文件夹,需要手动在py文件目录下建立files文件夹后运行 #coding=utf-8 import ...

  5. js中对arry数组的各种操作小结 瀑布流AJAX无刷新加载数据列表--当页面滚动到Id时再继续加载数据 web前端url传递值 js加密解密 HTML中让表单input等文本框为只读不可编辑的方法 js监听用户的键盘敲击事件,兼容各大主流浏览器 HTML特殊字符

    js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊 ...

  6. 抓取“矢量”的实时交通流量数据

    1. 引言 最近老师有一个需求,就是想要抓取实时的矢量交通流量数据来做分析,类似于百度地图,高德地图的"实时路况"那种.平时的网络抓取工作一般是抓取网页上现成的数据,但是交通流量数 ...

  7. scrapy实战4 GET方法抓取ajax动态页面(以糗事百科APP为例子):

    一般来说爬虫类框架抓取Ajax动态页面都是通过一些第三方的webkit库去手动执行html页面中的js代码, 最后将生产的html代码交给spider分析.本篇文章则是通过利用fiddler抓包获取j ...

  8. Scrapy 模拟登陆知乎--抓取热点话题

    工具准备 在开始之前,请确保 scrpay 正确安装,手头有一款简洁而强大的浏览器, 若是你有使用 postman 那就更好了.           Python   1 scrapy genspid ...

  9. Scrapy爬虫入门系列4抓取豆瓣Top250电影数据

    豆瓣有些电影页面需要登录才能查看. 目录 [隐藏]  1 创建工程 2 定义Item 3 编写爬虫(Spider) 4 存储数据 5 配置文件 6 艺搜参考 创建工程 scrapy startproj ...

随机推荐

  1. dhtmlx3.6 grid列头合并

    mygrid.setHeader("序号,操作人员,发药,#cspan,审核,#cspan,数量小计,金额小计");mygrid.attachHeader(["#rspa ...

  2. HDU 5700 优先队列(或者multiset) 或 线段树

    题目大意:有n个区间,求k个区间,使得这k个区间相交的区间内数字之和最大.数列的数字均>=0 优先队列思路: 按照左端点sort,然后枚举左端点,假设他被覆盖过k次,然后用优先队列来维护最右端即 ...

  3. HDU 2608 底数优化分块 暴力

    T(n) as the sum of all numbers which are positive integers can divied n. and S(n) = T(1) + T(2) + T( ...

  4. Linux rpm yum 等安装软件

    任何程序都是先写代码,拿到源码去编译得到一个目标程序. 1  编译的过程复杂有需要准备编译的环境,和硬件有关,32位64位,内核的不同等等所以需要编译多次     Java特殊但是他需要安装jvm, ...

  5. Unity 添加鼠标右键事件

    把此类放到 Editor下使用就OK using UnityEngine; using System.Collections; using System.Collections.Generic; us ...

  6. 一个JAVA渣渣的校招成长记,附BAT美团网易等20家面经总结

    欢迎关注我的微信公众号:"Java面试通关手册"(坚持原创,分享美文,分享各种Java学习资源,面试题,以及企业级Java实战项目回复关键字免费领取): 今天分享一篇牛客网上的一个 ...

  7. 10 - 函数嵌套-作用域-闭包-LEGB-函数销毁

    目录 1 函数嵌套 2 作用域 2.1 global关键字 3 闭包 3.1 nonlocal关键字 4 默认值的作用域 5 变量名解析原则LEGB 6 函数的销毁 1 函数嵌套         一个 ...

  8. python基础之上下文管理器

    前言 关于计算器运行的上下文的概念,我的理解也不是很深:按我的理解就是程序在运行之前,其所需要的资源,运行环境等都会被序列化,然后加入到CPU的任务队列中,等待调度系统分配时间片执行.下面谈谈pyth ...

  9. (转)USB的描述符及各种描述符之间的依赖关系

    全文链接:http://justmei.blog.163.com/blog/static/11609985320102421659260/?latestBlog 1 推荐 [原创] USB入门系列之七 ...

  10. [转载]Selenium実行中にJavaScriptのコードを実行する

    Selenium実行中にJavaScriptのコードを実行する JavaScriptで画面の値を取得/設定するコードをメモ. WebDriverEx.cs // JavaScriptを実行(戻り値なし ...