文章目录

  • 1 创建项目
  • 2 目标内容
  • 3 Spider初始化
    • 3.1 域名起始页
    • 3.2 起始页跳转详情页
  • 4 测试
    • 4.1 robots.txt报错
    • 4.2 设置header
  • 5 后记

1 创建项目

步骤:

  1. 创建项目
  2. 构建虚拟环境
  3. 生成Spider

创建项目后,目录图示:

上面的步骤及使用的具体命令这里不再赘述,如有需求可以自行查阅相关文档或者看下之前的文章。

2 目标内容

下面呢我们来爬取一个视频网站,通过首页发现菜单->作品,来到视频列表,这就算我们要爬取的内容。

那么具体有哪些呢?我们随便点开一个视频,看下视频详情页,f12打开面板,图示:

。要爬取的内容包括:

  • title:视频标题
  • category:视频分类

上面只列举了部分字段,后面如有需要,可以在添加。

构建Item如下:

from scrapy import Item, Fieldclass XpcWorkItem(Item):# 网页idarticle_id = Field()# 视频idmedia_id = Field()# 信息urlinfo_url = Field()# 标题title = Field()# 视频appKeyapp_key = Field()# 视频源地址video_url = Field()# 封面cover = Field()# 分类category = Field()# 描述description = Field()# 点赞likes = Field()# 收藏collections = Field()# 播放量play_counts = Field()# 发布时间publish_time = Field()# 发布地址ip_location = Field()

3 Spider初始化

3.1 域名起始页

这个很容易:

allowed_domains = ['xxx.com']
start_urls = ['https://www.xxx.com/channel/index/sort-like?from=navigator']

如有问题,可查阅url相关文档。

3.2 起始页跳转详情页

首先我们通过详情页f12查找视频对应的a标签是否有跳转地址,结果并没有,图示:

那么我们在去详情页看下url:

https://www.xxx.com/a12129151?from=ArticleList

那么存在变量的地方就是这个a12129151 。

在返回视频列表搜索a12129151或者12129151发现 li标签其中data-articleid属性的值就是前面的数字。

需要构建的url:

https://www.xxx.com/a%s?from=ArticleList

这个%s需要我们通过页面抓取,代码如下:

    def parse(self, response):# 获取每个视频详情页urlpid_list = response.xpath('//ul[@class="video-list"]/li/@data-articleid').getall()pid_list = response.css('ul.video-list.li::attr(data-articleid)').getall()url = 'https://www.xxx.com/a%s?from=ArticleList'for pid in pid_list:print(url % pid)yield response.follow(url % pid, self.parse_item)

4 测试

4.1 robots.txt报错

测试报错:

2022-09-28 18:05:46 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://www.xxx.com/robots.txt> (referer: None)
2022-09-28 18:05:46 [scrapy.downloadermiddlewares.robotstxt] DEBUG: Forbidden by robots.txt: <GET https://www.xxx.com/channel/index/sort-like?from=navigator>
2022-09-28 18:05:46 [scrapy.core.engine] INFO: Closing spider (finished)
2022-09-28 18:05:46 [scrapy.statscollectors] INFO: Dumping Scrapy stats:

哎,这是啥情况,我们访问robots.txt的时候被拒绝了 。关于robots.txt,如果有不懂的小伙伴,可自行查阅相关文档。下面我们来看下robots.txt具体什么内容:

...User-agent: xxxspider
Crawl-delay: 1
Disallow: /api/
Allow: /...

简单翻译下就是:除了代理是xxxspider,…被允许访问除/api/路径下所有资源,其他一概拒绝。

4.2 设置header

这里我们就按要求设置User-Agent,设置的话可以全局设置或者部分设置:

  • 全局:整个项目生效,在settings.py中设置
  • 部分生效:
    • 某个Spider生效
    • 单独的Request生效:本例采用
headers = {'User-Agent': 'xxxspider'}

这里的xxx为某度

通过给每个Request对象来设置此header信息。

    def start_requests(self):return [Request(url=self.start_urls[0], callback=self.parse, headers=self.headers)]def parse(self, response):# 获取每个视频详情页urlpid_list = response.xpath('//ul[@class="video-list"]/li/@data-articleid').getall()# pid_list = response.css('ul.video-list.li::attr(data-articleid)').getall()url = 'https://www.xxx.com/a%s?from=ArticleList'yield response.follow(url % pid_list[0], self.parse_item, headers=self.headers, cb_kwargs={"aid": pid_list[0]})

因为是测试,我们只测试了一个视频。结果:

2022-09-28 18:15:30 [scrapy.core.scraper] DEBUG: Scraped from <200 https://app.xxx.com/article/12129151>

访问成功,至此完成详情页的访问。后续代码持续更新,源代码在下面代码仓库。

5 后记

上面的xxx,我是用的xinpianchang测试的,可自行选取网址测试。

代码仓库:https://gitee.com/gaogzhen/python-study.git

网站视频详情页-网站-实践-scrapy框架相关推荐

  1. 02数据存入数据库-视频网站-实践-scrapy框架-python

    文章目录 1 构建Item 1.1 创建Item 1.2 获取目标内容 1.3 解析数据接口 1.4 封装Item 2 存储 2.1 mysql 2.2 pipelines 3 测试 4 后记 1 构 ...

  2. html访问java接口出现缓存_高可用架构设计(3) -电商商品详情页缓存背景及框架说明...

    Github 0 导读 我们这个教程,基于hystrix,如何来构建高可用的分布式系统的架构,项目实战 模拟真实业务的这么一个小型的项目,来全程贯穿,用这个项目中的业务场景去一个一个的讲解hystri ...

  3. 高可用架构设计(3) -电商商品详情页缓存背景及框架说明

    大背景:电商网站,首页,商品详情页,搜索结果页,广告页,促销活动,购物车,订单系统,库存系统,物流系统 小背景:商品详情页,如何用最快的结果将商品数据填充到一个页面中,然后将页面显示出来 分布式系统: ...

  4. UI设计实用素材|寻找一种新的方法来设计网站,单页网站

    寻找一种新的方法来设计网站? 如果设计得当,单页网站可以为访问者创造更令人难忘的体验. 明智的设计选择可以帮助减少疲劳和沮丧,否则人们会感到使用网络. web设计者有很多方法可以减少分心.信息过载和分 ...

  5. 关于商品详情页接口流程编排框架的一点实践

    商品详情页,其实就是查各种接口,然后集中对用户展示商品各种各类信息,最核心的就是商品信息,还包括关键信息诸如价格信息.优惠券.促销信息.配送信息,还有一些可有可无的内容,比如问答.评价等信息. 我们实 ...

  6. 电商详情页系统实战(2) -小型电商网站商品详情页的页面静态化架构及缺陷

    商品详情页的系统架构 => 缓存架构 => 高并发 => 高可用 电商网站里,大概可以说分成两种 小型电商 简单的一种架构方案,页面静态化的方案 大型电商 复杂的一套架构,大电商,国 ...

  7. 白屏优化_今日头条品质优化 图文详情页秒开实践

    背景 作为一个内容类应用,看新闻读资讯一直是头条用户的核心需求,页面的打开速度直接关系到用户使用头条的核心体验,在头条中,为了更多的承载足够丰富的样式和逻辑下保持多端体验的统一,详情页的内容我们是通过 ...

  8. 从0到1:腾讯Yoo视频底层页推荐系统实践

    本次分享主要包括以下几个部分: 1. 业务背景: 2. 召回相关技术与实践: 3. 排序相关技术与实践: 4. 思考及未来规划. 1. 业务背景 底层页指在点击左侧双列feed流中点击一个视频(1号) ...

  9. Ecshop 2.7.1 B2B2C 小京东 商城网站 商品详情页二维码显示出错

    出现二维码显示出错的问题总结了三种: 一:可以看到上述的页面,左侧为商品详情二维码,此二维码可以在商城总后台设置,设置时注意格式,要与你的手机端页面链接相同,最后面的id值是你的商品id,如:http ...

最新文章

  1. 6、WHERE:条件查询数据
  2. WinForm 之 程序启动不显示主窗体
  3. iOS开发23:通过归档永久存储数据
  4. 在WordPress文章中插入表格的四种方法,史上最全
  5. mongodb简单的增删改查
  6. GDB调试乱序,出现value optimized out解决方法
  7. mxnet 训练--如何生成rec 数据 +自己在本机测试的结果
  8. Kafka之与Spring集成
  9. python 打印unicode字符串
  10. 在PPAPI插件中使用Skia绘图
  11. Mybatis中文文档
  12. Spring事务原理1-动态代理
  13. Silvaco仿真学习
  14. 信息安全-应用安全-SAST、DAST、IAST
  15. Echarts16 ---散点图-趋势图
  16. 0.1+0.2 等于 0.3 吗?
  17. 3D Instance Embedding Learning With a Structure-Aware Loss Function for Point Cloud Segmentation
  18. 生活实用之清洗小龙虾
  19. pid控制C语言实现
  20. 美通企业日报 | 未来20年中国将成全球最大商用飞机买家;九成上班族进行过知识付费...

热门文章

  1. 阿甘正传台本_阿甘正传与愚蠢与简单的区别
  2. Windows+IIS+PHP——PHP安装与环境配置
  3. 详解UI设计师与美工区别(附UI设计学习线路图)
  4. 【TypeScript】TS 看这一篇就够了
  5. 数据防泄密专家为企业数据泄漏出谋划策
  6. 解决win10硬盘不显示容量条的问题
  7. 前端HTML小米官方网站界面部分实现
  8. 个人理解hisat2 mapping 结果,并计算overall alignment rate
  9. 如何安装博通 BCM43142 网卡驱动
  10. 微服务架构下的根因定位方法综述