# -*- coding: utf-8 -*-
import scrapy class TestSpider(scrapy.Spider):
name = 'test'
allowed_domains = ['yeves.cn']
start_urls = ['https://yeves.cn/']
base_domain = 'https://yeves.cn{}' # 基础域名
def parse(self, response): articles = response.xpath('//*[@id="article"]//div') # 获取首页的标题和链接 for article in articles:
title = article.xpath('./div/article/div/header/h2/a/text()').extract_first()
href = article.xpath('./div/article/div/header/h2/a/@href').extract_first()
if title is not None and href is not None:
href = self.base_domain.format(href)
yield scrapy.Request(href,callback=self.parse_detail,meta={"title":title}) #通过标题链接获取详情 把标题带过去 def parse_detail(self,respone):
print(respone.url)
print(respone.meta.get('title'))
detail = {}
detail['title'] = respone.meta.get('title') created_at = respone.xpath('/html/body/section/div/div/header/div/span[1]/time/text()').extract_first() # 拿到详情数据
category = respone.xpath('/html/body/section/div/div/header/div/span[2]/a/text()').extract_first()
content = respone.xpath('/html/body/section/div/div/article//text()').extract_first() detail['created_at'] = created_at
detail['category'] = category
print(detail)
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. Linux实战(12):解决Centos7 docker 无法自动补全

    环境:centos最小化安装,会出现一些命令无法自动补全的情况,例如在docker start 无法自动补全 start 命令,无法自动补全docker容器名字.出现这种情况的可参考以下操作: yum ...

  2. springboot的文件路径,配置文件

    生成springboot会指定一个包路径,启动的class文件在这个目录下,其他的controller等也要在这个目录的子目录下,不然会扫不到. 一般我们会维护两三个配置文件:生产环境,开发环境,测试 ...

  3. python:一切皆对象

      学过java语言的童鞋都知道,java是一门面向对象语言,其基本思想就是一切皆对象.Python也是一样的,甚至Python将面向对象思想贯彻地更加彻底,因为在Python中,class本身是一个 ...

  4. 龙芯3A4000-Debian 10上常用软件记录

    所用平台 硬件:龙芯3a4000 (MIPS64el) 操作系统:Debian 10(buster)+ MATE桌面 内核版本:4.19.90 以下所有软件同样适用于x86体系结构的Linux发行版. ...

  5. ps -ef | grep使用详解

    转载于: https://www.cnblogs.com/freinds/p/8074651.html   ps命令将某个进程显示出来 grep命令是查找 中间的|是管道命令 是指ps命令与grep同 ...

  6. 微信小程序-实现文字跑马灯-wepy

    百度蛮多例子的,但是代码太长懒得看了 前言 要实现跑马灯主要就是获得判断开始定界和结束定界, 1.9.3新增的wxml操作接口 就可以拿到节点长宽等属性,当然你也可以直接用 文字数量 * 文字大小(注 ...

  7. Kafka控制器事件处理全流程分析

    前言 大家好,我是 yes. 这是Kafka源码分析第四篇文章,今天来说说 Kafka控制器,即 Kafka Controller. 源码类的文章在手机上看其实效果很差,这篇文章我分为两部分,第一部分 ...

  8. sping ioc 源码分析(一)-- register(componentClasses) 方法

    一.测试环境的搭建: public class Apple { } @Component public class MyComponet { } public class MyCondition im ...

  9. Python练习题 001:4个数字求不重复的3位数

    听说做练习是掌握一门编程语言的最佳途径,那就争取先做满100道题吧. ----------------------------------------------------------------- ...

  10. Azure Cosmos DB (一) 入门介绍

    一,引言 今天是国庆.中秋双节房价的第三天,今天抽时间分享一篇关于使用Azure 提供的一项NoSql 服务-----Azure Cosmos DB.就有人问了,我听说过 MongoDB.Redis ...