# -*- 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

最新文章

  1. [C/C++] C/C++延伸学习系列之STL及Boost库概述
  2. SVN批处理
  3. GridLayout自定义数字键盘(两个EditText)
  4. Fedora 24 install MySQL
  5. Python Ogre Blender(转载)
  6. Entity Framework 学习第一天 续
  7. PHPStorm 3.0 与服务器端代码同步配置
  8. SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)
  9. Qt容器类的对象模型及应用(线性结构篇)(好多图,比较清楚)
  10. [bzoj3702] 二叉树
  11. php分页数据最后一页继续追加第一页数据
  12. SQL Server 2014备份维护计划
  13. PID控制器开发笔记之三:抗积分饱和PID控制器的实现
  14. Java 之 JavaScript (二)
  15. EasyUI datagrid columns 中 field 区分大小写
  16. Linux安装python3.7
  17. if else的使用以及如何从键盘获取数值
  18. Java - 线程让步和休眠
  19. POJ 2337 Catenyms (欧拉回路)
  20. 判断UNITY版本号

热门文章

  1. java中包名命名规范
  2. oracle之通过group by产生统计报告
  3. git如何在远程某个分支的基础上新建分支
  4. HBase shell的使用记录
  5. java事件触发
  6. Spring学习(六)bean装配详解之 【通过注解装配 Bean】【基础配置方式】
  7. keepalived+nginx集群
  8. (转)Java中的值传递和引用传递
  9. 渗透测试方法论(qf总结)
  10. 适用于 deno 的多版本管理工具 dvm 发布