Scrapy爬取多层级网页内容的方式
# -*- 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爬取多层级网页内容的方式相关推荐
- 【爬虫】Scrapy爬取腾讯社招信息
目标任务:爬取腾讯社招信息,需要爬取的内容为:职位名称,职位的详情链接,职位类别,招聘人数,工作地点,发布时间. 一.预备基础 1.Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站 ...
- 基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据
基于selenium+scrapy爬取复仇者联盟4豆瓣影评数据 参考资料: 黑马程序员爬虫教程 静觅爬虫教程 mac下anaconda安装selenium+PhantomJS scrapy下载中间件结 ...
- 利用Scrapy爬取1905电影网
本文将从以下几个方面讲解Scrapy爬虫的基本操作 Scrapy爬虫介绍 Scrapy安装 Scrapy实例--爬取1905电影网 相关资料 Scrapy 爬虫介绍 Scrapy是Python开发的一 ...
- Scrapy爬取博人传漫画
Scrapy框架. 为什么要学习scrapy? 理由:日常的Requests + Selenium虽然可以爬取网站内容,一旦遇到下载文件/图片,下载速度慢的鸡肋很快就暴露出来,有人说可以自己写高并发处 ...
- Scrapy爬取姓名大全,看看那个名字最受父母青睐
点击上方"AI搞事情"关注我们 最近在做的项目需要用到名字的数据,可哪儿有这么多名字给我用呢?经一通搜索,不仅找到一个神奇的网站姓名大全,还有人开源了爬虫的代码.让我一番修改,得到 ...
- 如何用 Python + Scrapy 爬取视频?
今天将带大家简单了解Scrapy爬虫框架,并用一个真实案例来演示代码的编写和爬取过程. 一.scrapy简介 1. 什么是Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框 ...
- scrapy 解析css,Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段...
上次我们介绍了scrapy的安装和加入debug的main文件,这次重要介绍创建的爬虫的基本爬取有用信息 通过命令(这篇博文)创建了jobbole这个爬虫,并且生成了jobbole.py这个文件,又写 ...
- Scrapy爬取美女图片续集 (原创)
上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...
- 基于Python、scrapy爬取软考在线题库
前言 前段时间,报名个软件设计师考试,自然需要复习嘛,看到软考在线这个平台有历年来的题目以及答案,想法就是做一个题库小程序咯,随时随地可以打开复习.很多人问,这不出现很多类似的小程序了?是的,但是他们 ...
- Scrapy 爬取今日头条街拍图片
scrapy 爬取今日头条图片保存至本地 之前用 requests 爬取过今日头条街拍的图片,当时只是爬取每篇文章的缩略图,今天尝试用 scrapy 来大规模爬取街拍详细图片. 分析页面 今日头条的内 ...
最新文章
- 一文带你重温去年最难忘的10个数据泄露事件
- linux下vsftp
- java基本语文档_Java 文档注释
- java事务过大影响系统性能吗_Java编程性能优化-影响性能的因素你都知道吗?
- NFC与RFID的原理及应用区别
- (2015-12-09)java.util.Arrays的用法
- hibernate在saveOrUpdate时,update报错:a different object with the same identifier value was already assoc
- UFIDL稀疏自编码代码实现及解释
- ASP.NET MVC 之 View 测试
- C# 邮件类 Mailmessage
- 因系统因配置问题报错,如何调整(两类 【与外界其他环境相关联】 【★自身配置★】(★关注web.xml★))
- 【ENVI入门系列】02.自定义坐标系(北京54、西安80、2000坐标系)
- 安全生产:端正工作态度
- python切片原理_彻底理解Python list切片原理
- bootstrap之双日历时间段选择控件—daterangepicker
- 微信小程序自定义tabbar以及闪烁问题
- Math三点共线判断
- 手机构建Linux环境,Linux手机DIY.构建统一安装包
- Neo4j图数据库,用py2neo中的OGM操作(类似ORM)
- ASP.NET MVC4 音乐商店,Entity Framework 5.0
热门文章
- 【Shiro第四篇】SpringBoot + Shiro实现记住登录状态
- RabbitMQ消费者流量控制策略总结
- Linux指令:top
- C++ - 使用copy函数打印容器(container)元素
- EvilAP_Defender:可以警示和攻击 WIFI 热点陷阱的工具
- 解决相片上传主键唯一性问题,java 上传相片到服务器的时候,相片保存主键用guid。...
- cocos2d-x之物理世界(创建物理世界)
- SQL SERVER: 合并相关操作(Union,Except,Intersect)
- Luogu3431 [POI2005]AUT-The Bus
- js基础-6-作用域、执行流程、this指向