# -*- coding: utf-8 -*-
import scrapy
from Avv.items import AvvItemclass AvSpider(scrapy.Spider):name = 'av' # 爬虫名allowed_domains = ['51porn.net/'] # 爬虫作用域# 爬取第2页到最后一页的代码url = 'http://www.51porn.net/nvyoudaquan/index_{}.html' # 起始url,并用花括号格式化offset = 2 # 偏移量start_urls = [url.format(str(offset))] # 拼接为完整urldef parse(self, response): # 第一个parse,从中提取下一层url# 第一部分links = response.xpath("//ul[@class='clearfix']/li/a/@href").extract() # 利用xpath提取下一层的url列表,并用extract转换为字符串for link in links: # 遍历上个列表url = "http://www.51porn.net" + link # 由于提取出来的url不完整,所以需要拼接为完整的urlyield scrapy.Request(url,callback=self.parse_s,dont_filter=True) # 请求下一层url,方法为第二个parse,dont_filter=True的作用是避免有时候新的url会被作用域过滤掉

    # 第二部分m_page = 26 # 这里设置的是第一层的url有多少页if self.offset<m_page: # 如果当前页小于最大页self.offset += 1 # 偏移量自增1yield scrapy.Request(self.url.format(str(self.offset)),callback=self.parse,dont_filter=True) # 再此请求第一层的新的urldef parse_s(self, response):link = response.xpath("//div[@class='wrap loadimg avlist-small']/ul/li[1]/a/@href").extract()[0] # 提取第2层urlurl = "http://www.51porn.net" + link # 拼接为新的urlyield scrapy.Request(url,callback=self.parse_t,dont_filter=True) # 请求第3个parsedef parse_t(self, response):links = response.xpath("//ul[@class='alllist clearfix']/li/a/@href").extract() # 提取第3层urlfor link in links:url = "http://www.51porn.net" + link # 拼接为新的urlyield scrapy.Request(url,callback=self.parse_last,dont_filter=True) # 请求最后的parsedef parse_last(self, response):item = AvvItem() # 实例一个引入的字典类对象node_list = response.xpath("//div[@class='content loadimg wow fadeInUp']")for node in node_list:# 提取以下具体信息item["m_num"] = node.xpath("./p[1]/text()").extract()[0]item["m_name"] = node.xpath("./p[2]/text()").extract()[0]item["s_name"] = node.xpath("./p[3]/a/text()").extract()[0]item["i_date"] = node.xpath("./p[4]/text()").extract()[0]item["l_work"] = node.xpath("./p[5]/text()").extract()[0]item["m_style"] = node.xpath("./p[7]/text()").extract()[0] if len(node.xpath("./p[7]/text()"))>0 else "无" # 判断此信息是否为空值item["c_work"] = node.xpath("./p[8]/img/@src").extract()[0]yield item # 返回

转载于:https://www.cnblogs.com/shawone/p/10229261.html

Scrapy爬取多层级网页内容的方式相关推荐

  1. 【爬虫】Scrapy爬取腾讯社招信息

    目标任务:爬取腾讯社招信息,需要爬取的内容为:职位名称,职位的详情链接,职位类别,招聘人数,工作地点,发布时间. 一.预备基础 1.Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站 ...

  2. 基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据

    基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据 参考资料: 黑马程序员爬虫教程 静觅爬虫教程 mac下anaconda安装selenium+PhantomJS scrapy下载中间件结 ...

  3. 利用Scrapy爬取1905电影网

    本文将从以下几个方面讲解Scrapy爬虫的基本操作 Scrapy爬虫介绍 Scrapy安装 Scrapy实例--爬取1905电影网 相关资料 Scrapy 爬虫介绍 Scrapy是Python开发的一 ...

  4. Scrapy爬取博人传漫画

    Scrapy框架. 为什么要学习scrapy? 理由:日常的Requests + Selenium虽然可以爬取网站内容,一旦遇到下载文件/图片,下载速度慢的鸡肋很快就暴露出来,有人说可以自己写高并发处 ...

  5. Scrapy爬取姓名大全,看看那个名字最受父母青睐

    点击上方"AI搞事情"关注我们 最近在做的项目需要用到名字的数据,可哪儿有这么多名字给我用呢?经一通搜索,不仅找到一个神奇的网站姓名大全,还有人开源了爬虫的代码.让我一番修改,得到 ...

  6. 如何用 Python + Scrapy 爬取视频?

    今天将带大家简单了解Scrapy爬虫框架,并用一个真实案例来演示代码的编写和爬取过程. 一.scrapy简介 1. 什么是Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框 ...

  7. scrapy 解析css,Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段...

    上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写 ...

  8. Scrapy爬取美女图片续集 (原创)

    上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...

  9. 基于Python、scrapy爬取软考在线题库

    前言 前段时间,报名个软件设计师考试,自然需要复习嘛,看到软考在线这个平台有历年来的题目以及答案,想法就是做一个题库小程序咯,随时随地可以打开复习.很多人问,这不出现很多类似的小程序了?是的,但是他们 ...

  10. Scrapy 爬取今日头条街拍图片

    scrapy 爬取今日头条图片保存至本地 之前用 requests 爬取过今日头条街拍的图片,当时只是爬取每篇文章的缩略图,今天尝试用 scrapy 来大规模爬取街拍详细图片. 分析页面 今日头条的内 ...

最新文章

  1. 一文带你重温去年最难忘的10个数据泄露事件
  2. linux下vsftp
  3. java基本语文档_Java 文档注释
  4. java事务过大影响系统性能吗_Java编程性能优化-影响性能的因素你都知道吗?
  5. NFC与RFID的原理及应用区别
  6. (2015-12-09)java.util.Arrays的用法
  7. hibernate在saveOrUpdate时,update报错:a different object with the same identifier value was already assoc
  8. UFIDL稀疏自编码代码实现及解释
  9. ASP.NET MVC 之 View 测试
  10. C# 邮件类 Mailmessage
  11. 因系统因配置问题报错,如何调整(两类 【与外界其他环境相关联】 【★自身配置★】(★关注web.xml★))
  12. 【ENVI入门系列】02.自定义坐标系(北京54、西安80、2000坐标系)
  13. 安全生产:端正工作态度
  14. python切片原理_彻底理解Python list切片原理
  15. bootstrap之双日历时间段选择控件—daterangepicker
  16. 微信小程序自定义tabbar以及闪烁问题
  17. Math三点共线判断
  18. 手机构建Linux环境,Linux手机DIY.构建统一安装包
  19. Neo4j图数据库,用py2neo中的OGM操作(类似ORM)
  20. ASP.NET MVC4 音乐商店,Entity Framework 5.0

热门文章

  1. 【Shiro第四篇】SpringBoot + Shiro实现记住登录状态
  2. RabbitMQ消费者流量控制策略总结
  3. Linux指令:top
  4. C++ - 使用copy函数打印容器(container)元素
  5. EvilAP_Defender:可以警示和攻击 WIFI 热点陷阱的工具
  6. 解决相片上传主键唯一性问题,java 上传相片到服务器的时候,相片保存主键用guid。...
  7. cocos2d-x之物理世界(创建物理世界)
  8. SQL SERVER: 合并相关操作(Union,Except,Intersect)
  9. Luogu3431 [POI2005]AUT-The Bus
  10. js基础-6-作用域、执行流程、this指向