之前我们使用lxml对梨视频网站中的视频进行了下载

下面我用scrapy框架对梨视频网站中的视频标题和视频页中对视频的描述进行爬取

分析:我们要爬取的内容并不在同一个页面,视频描述内容需要我们点开视频,跳转到新的url中才能获取,我们就不能在一个方法中去解析我们需要的不同内容

1.爬虫文件

这里我们可以仿照爬虫文件中的parse方法,写一个新的parse方法,可以将新的url的响应对象传给这个新的parse方法

如果需要在不同的parse方法中使用同一个item对象,可以使用meta参数字典,将item传给callback回调函数

爬虫文件中的parse需要yield的Request请求,而item则在新的parse方法中使用yield item传给下一个parse方法或管道文件

import scrapy

# 从items.py文件中导入BossprojectItem类

from bossProject.items import BossprojectItem

class BossSpider(scrapy.Spider):

name = "boss"

# allowed_domains = ["www.xxx.com"]

start_urls = ["https://www.pearvideo.com/category_5"]

# 回调函数接受响应对象,并且接受传递过来的meata参数

def content_parse(self,response):

# meta参数包含在response响应对象中,调用meta,然后根据键值取出对应的值:item

item = response.meta["item"]

# 解析视频链接中的对视频的描述

des = response.xpath("//div[@class="summary"]/text()").extract()

des = "".join(des)

item["des"] = des

yield item

# 解析首页视频的标题以及视频的链接

def parse(self, response):

li_list = response.xpath("//div[@id="listvideoList"]/ul/li")

for li in li_list:

href = li.xpath("./div/a/@href").extract()

href = "https://www.pearvideo.com/" + "".join(href)

title = li.xpath("./div[1]/a/div[2]/text()").extract()

title = "".join(title)

item = BossprojectItem()

item["title"] = title

#手动发送请求,并将响应对象传给回调函数

#请求传参:meta={},可以将meta字典传递给请求对应的回调函数

yield scrapy.Request(href,callback=self.content_parse,meta={"item":item})

2.items.py

要将BossprojectItem类导入爬虫文件中才能够创建item对象

import scrapy

class BossprojectItem(scrapy.Item):

# define the fields for your item here like:

# name = scrapy.Field()

# 定义了item属性

title = scrapy.Field()

des = scrapy.Field()

3.pipelines.py

open_spider(self,spider)和close_spider(self,spider)重写这两个父类方法,且这两个方法都只执行一次在process_item方法中最好保留return item,因为如果存在多个管道类,return item会自动将item对象传给优先级低于自己的管道类

from itemadapter import ItemAdapter

class BossprojectPipeline:

def __init__(self):

self.fp = None

# 重写父类方法,只调用一次

def open_spider(self,spider):

print("爬虫开始")

self.fp = open("./lishipin.txt","w")

# 接受爬虫文件中yield传递来的item对象,将item中的内容持久化存储

def process_item(self, item, spider):

self.fp.write(item["title"] + "

" + item["des"] + "

")

# 如果有多个管道类,会将item传递给下一个管道类

# 管道类的优先级取决于settings.py中的ITEM_PIPELINES属性中对应的值

## ITEM_PIPELINES = {"bossProject.pipelines.BossprojectPipeline": 300,} 键值中的值越小优先级越高

return item

# 重写父类方法,只调用一次

def close_spider(self,spider):

self.fp.close()

print("爬虫结束")

4.进行持久化存储

到此这篇关于python爬虫scrapy框架的梨视频案例解析的文章就介绍到这了,更多相关python爬虫scrapy框架内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

python scrapy爬虫视频_python爬虫scrapy框架的梨视频案例解析相关推荐

  1. python spider怎么用_python爬虫入门(七)Scrapy框架之Spider类

    Spider类 Spider类定义了如何爬取某个(或某些)网站.包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item). 换句话说,Spider就是您定义爬取的动作 ...

  2. python爬虫模块_Python爬虫 --- Scrapy爬取IT桔子网

    目标: 此次爬取主要是针对IT桔子网的事件信息模块,然后把爬取的数据存储到mysql数据库中. 目标分析: 通过浏览器浏览发现事件模块需要登录才能访问,因此我们需要先登录,抓取登录接口: 可以看到桔子 ...

  3. scrapy mysql 豆瓣_Python爬虫之Scrapy+Mysql+Mongodb爬豆瓣top250电影

    学习python时,爬虫是一种简单上手的方式,应该也是一个必经阶段.本项目用Scrapy框架实现了抓取豆瓣top250电影,并将图片及其它信息保存下来.爬取豆瓣top250电影不需要登录.没有JS解析 ...

  4. python爬虫设计模式_Python爬虫进阶一之爬虫框架概述

    综述 爬虫入门之后,我们有两条路可以走. 一个是继续深入学习,以及关于设计模式的一些知识,强化Python相关知识,自己动手造轮子,继续为自己的爬虫增加分布式,多线程等功能扩展.另一条路便是学习一些优 ...

  5. python爬微信公众号视频_python爬虫公众号所有信息,并批量下载公众号视频

    之前写过一篇类似的文章:python爬取公众号,用最简单的方式爬虫 还有同学一直在问,可能中间有一些小细节不明确,这次彻底明确一下细节. 本篇添加一个批量下载公众号内视频的功能,可以实现完全复制一个公 ...

  6. python scrapy教程实例_Python之scrapy实例1

    下文参考:http://www.jb51.net/article/57183.htm 个人也是稍加整理,修改其中的一些错误,这些错误与scrapy版本选择有关,个环境:Win7x64_SP1 + Py ...

  7. python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)

    本篇主页内容:match的基本使用,search的基本使用,findall,finditer的基本使用,匹配中文,贪婪与非贪婪模式 Python爬虫教程-19-数据提取-正则表达式(re) 正则表达式 ...

  8. python scrapy 简单教程_python之scrapy入门教程

    看这篇文章的人,我假设你们都已经学会了python(派森),然后下面的知识都是python的扩展(框架). 在这篇入门教程中,我们假定你已经安装了Scrapy.如果你还没有安装,那么请参考安装指南. ...

  9. python爬虫代理服务器_Python爬虫之服务器:代理IP万能

    最近很多同学租服务器用来学习爬虫,对于大部分小白来说,爬虫非常复杂.技术门槛很高.但我们可以通过爬虫获取大量的价值数据,经分析可以发挥巨大的价值,比如:豆瓣.知乎,爬取优质答案,筛选出各话题下热门内容 ...

最新文章

  1. Linux下安装Java8
  2. python计算时间差
  3. Windows MySQL8.0安装出错解决方案(Start Server 失败)
  4. java.lang包—类加载器ClassLoader类
  5. Oracle入门(十四)之PL/SQL
  6. mysql 多个实例 备份_Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份...
  7. html如何查找文件,如何查找网站上HTML的CLASS文件并下?如何查找网站上HTM 爱问知识人...
  8. Spring : Spring定义Bean的两种方式:lt; bean gt;和@Bean
  9. mysql 备份的权限_Mysql 数据库备份权限
  10. 有关于Java中JFrame方法的基本操作
  11. 驱动研究日记-内核同步
  12. Spring MVC(十六)--Spring MVC国际化实例
  13. 移动互联网创新39个热点
  14. PES实况足球2018 中文版下载解说 中超德甲亚冠世界杯夏季转会 全dlc
  15. EEPROM、FLASH、NOR FLASH、NAND FLASH 区别、关系总结
  16. 360WiFi的服务器网站,360随身无线wifi怎么搭建web认证网页
  17. 如何显示隐藏的 Chrome 扩展程序图标
  18. 浮点数的表示方法及换算技巧
  19. 西安电子科技大学计算机研一水课答案整理
  20. 事件营销说到底就是抓住热点事件做营销

热门文章

  1. 统计假设测验------(四)方差分析(F测验、多重比较原理与方法)
  2. springboot项目启动报错 url‘ attribute is not specified and no embedded datasource could be configured
  3. 你不可不知的《哈利波特》秘密(五)
  4. LVM挂盘(centos7 使用parted命令分区挂盘操作详细)
  5. 黎明前的黑暗(励志歌)
  6. [转] 晚上一般什么时候睡觉?
  7. node爬取双马尾小姐姐图片
  8. python 取整运算符_python运算符
  9. 清华大学(深圳)吕帅课题组招收计算机领域博士后
  10. iOS小技能:地址选择器(支持省份,省市,省市区,支持显示上一次选择的地址)