1. # -*- coding: utf-8 -*-
  2. import scrapy
  3.  
  4. class TestSpider(scrapy.Spider):
  5. name = 'test'
  6. allowed_domains = ['yeves.cn']
  7. start_urls = ['https://yeves.cn/']
  8. base_domain = 'https://yeves.cn{}' # 基础域名
  9. def parse(self, response):
  10.  
  11. articles = response.xpath('//*[@id="article"]//div') # 获取首页的标题和链接
  12.  
  13. for article in articles:
  14. title = article.xpath('./div/article/div/header/h2/a/text()').extract_first()
  15. href = article.xpath('./div/article/div/header/h2/a/@href').extract_first()
  16. if title is not None and href is not None:
  17. href = self.base_domain.format(href)
  18. yield scrapy.Request(href,callback=self.parse_detail,meta={"title":title}) #通过标题链接获取详情 把标题带过去
  19.  
  20. def parse_detail(self,respone):
  21. print(respone.url)
  22. print(respone.meta.get('title'))
  23. detail = {}
  24. detail['title'] = respone.meta.get('title')
  25.  
  26. created_at = respone.xpath('/html/body/section/div/div/header/div/span[1]/time/text()').extract_first() # 拿到详情数据
  27. category = respone.xpath('/html/body/section/div/div/header/div/span[2]/a/text()').extract_first()
  28. content = respone.xpath('/html/body/section/div/div/article//text()').extract_first()
  29.  
  30. detail['created_at'] = created_at
  31. detail['category'] = category
  32. print(detail)
  33. yield detail

scrapy Request方法的更多相关文章

  1. scrapy-实现下一页请求, scrapy.Request

    # -*- coding: utf-8 -*- import scrapy class HrSpider(scrapy.Spider): name = 'hr' allowed_domains = [ ...

  2. scrapy - Request 中的回调函数不执行

    在 scrapy 中, scrapy.Request(url, headers=self.header, callback=self.parse) 调试的时候,发现回调函数 parse_detail  ...

  3. 简单总结scrapy使用方法

    应课程需要写了几天爬虫,一开始使用requests+bs4的技术路线,但是速度不是很理想而且不能暂停,通过查阅资料,发现scrapy正是我需要的 做一下简短的记录: 首先应该毫不犹豫的scrapy s ...

  4. scrapy-yield scrapy.Request()不执行、失效、Filtered offsite request to错误 [转]

    scrapy错误:yield scrapy.Request()不执行.失效.Filtered offsite request to错误.首先我们在Request()方法里面添加这么一个东东: yiel ...

  5. Scrapy中scrapy.Request和response.follow的区别

    在写scrapy的spider类的parse方法的时候,有些链接需要提取出来继续爬取,这里scrapy提供了一些方法可以方便的实现这个功能,总结如下: 假设我们的目标a标签是target_a 方法1: ...

  6. 关于scrapy中scrapy.Request中的属性

    一.源码 def __init__(self, url, callback=None, method='GET', headers=None, body=None, cookies=None, met ...

  7. Scrapy - Request 中的回调函数callback不执行

    回调函数callback不执行 大概率是被过滤了 两种方法: 在 allowed_domains 中加入目标url 在 scrapy.Request() 函数中将参数 dont_filter=True ...

  8. 利用Filter和拦截器,将用户信息动态传入Request方法

    前言: 在开发当中,经常会验证用户登录状态和获取用户信息.如果每次都手动调用用户信息查询接口,会非常的繁琐,而且代码冗余.为了提高开发效率,因此就有了今天这篇文章. 思路: 用户请求我们的方法会携带一 ...

  9. nodejs -- http模块. request() 方法 , get方法.

    1. request方法: 提交评论到慕课网: var http = require('http'); var querystring = require('querystring'); var po ...

随机推荐

  1. Mysql数据分片技术(一)——初识表分区

    1. 为什么需要数据分片技术 2. 3种数据分片方式简述 3. 分片技术原理概述 4. 对单表分区的时机 1为什么需要数据分片技术 数据库产品的市场 在互联网行业内,绝大部分开发人员都会遇到数据表的性 ...

  2. Java多线程--公平锁与非公平锁

    上一篇文章介绍了AQS的基本原理,它其实就是一个并发包的基础组件,用来实现各种锁,各种同步组件的.它包含了state变量.加锁线程.等待队列等并发中的核心组件,现在我们来看一下多线程获取锁的顺序问题. ...

  3. 提权 EXP

    windows: 漏洞列表 #Security Bulletin #KB #Description #Operating System CVE-2017-0213 [Windows COM Eleva ...

  4. 解决 webpack .\src\main.js .\dist\bundle.js 错误

    打包的命令格式:webpack 要打包的文件的路径 打包好的输出文件的路径 栗子: webpack .\src\main.js .\dist\bundle.js 提示错误,错误信息如下: 错误原因 w ...

  5. tf.app.flags与argparse功能类似

    https://blog.csdn.net/ei1990/article/details/76423277 tensorflow中tf.app.flags与argparse模块有点类似,通过它们都可以 ...

  6. JAVA并发编程--Condition

    Condition主要是为了在J.U.C框架中提供和Java传统的监视器风格的wait,notify和notifyAll方法类似的功能. AQS等待队列与Condition队列是两个相互独立的队列 a ...

  7. 三级菜单打怪升级,young -> plus -> pro

    young -> simple 三级菜单超简单,每层都是小循环 小可爱,不是if就是for,真可爱 def menu(message): print('按q返回上一层') print('按e退出 ...

  8. pytorch和tensorflow的爱恨情仇之定义可训练的参数

    pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch版本:1.6.0 tensorflow版本:1.15.0 之前我们就已 ...

  9. MATLAB textread函数

    实际应用中经常要读取txt文件,这个时候就需要用到强大的textread函数.它的基本语法是:[A,B,C,...] = textread(filename,format)[A,B,C,...] = ...

  10. Java中 util 包 Calendar类制作万年历(不用自己写方法,直接用Java写好的包中的类的方法)

    代码前需要了解的关于Calendar类的内容:      1.在util包中,首先要知道Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象.Calendar 的 ...