网站视频详情页-网站-实践-scrapy框架
文章目录
- 1 创建项目
- 2 目标内容
- 3 Spider初始化
- 3.1 域名起始页
- 3.2 起始页跳转详情页
- 4 测试
- 4.1 robots.txt报错
- 4.2 设置header
- 5 后记
1 创建项目
步骤:
- 创建项目
- 构建虚拟环境
- 生成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框架相关推荐
- 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 构 ...
- html访问java接口出现缓存_高可用架构设计(3) -电商商品详情页缓存背景及框架说明...
Github 0 导读 我们这个教程,基于hystrix,如何来构建高可用的分布式系统的架构,项目实战 模拟真实业务的这么一个小型的项目,来全程贯穿,用这个项目中的业务场景去一个一个的讲解hystri ...
- 高可用架构设计(3) -电商商品详情页缓存背景及框架说明
大背景:电商网站,首页,商品详情页,搜索结果页,广告页,促销活动,购物车,订单系统,库存系统,物流系统 小背景:商品详情页,如何用最快的结果将商品数据填充到一个页面中,然后将页面显示出来 分布式系统: ...
- UI设计实用素材|寻找一种新的方法来设计网站,单页网站
寻找一种新的方法来设计网站? 如果设计得当,单页网站可以为访问者创造更令人难忘的体验. 明智的设计选择可以帮助减少疲劳和沮丧,否则人们会感到使用网络. web设计者有很多方法可以减少分心.信息过载和分 ...
- 关于商品详情页接口流程编排框架的一点实践
商品详情页,其实就是查各种接口,然后集中对用户展示商品各种各类信息,最核心的就是商品信息,还包括关键信息诸如价格信息.优惠券.促销信息.配送信息,还有一些可有可无的内容,比如问答.评价等信息. 我们实 ...
- 电商详情页系统实战(2) -小型电商网站商品详情页的页面静态化架构及缺陷
商品详情页的系统架构 => 缓存架构 => 高并发 => 高可用 电商网站里,大概可以说分成两种 小型电商 简单的一种架构方案,页面静态化的方案 大型电商 复杂的一套架构,大电商,国 ...
- 白屏优化_今日头条品质优化 图文详情页秒开实践
背景 作为一个内容类应用,看新闻读资讯一直是头条用户的核心需求,页面的打开速度直接关系到用户使用头条的核心体验,在头条中,为了更多的承载足够丰富的样式和逻辑下保持多端体验的统一,详情页的内容我们是通过 ...
- 从0到1:腾讯Yoo视频底层页推荐系统实践
本次分享主要包括以下几个部分: 1. 业务背景: 2. 召回相关技术与实践: 3. 排序相关技术与实践: 4. 思考及未来规划. 1. 业务背景 底层页指在点击左侧双列feed流中点击一个视频(1号) ...
- Ecshop 2.7.1 B2B2C 小京东 商城网站 商品详情页二维码显示出错
出现二维码显示出错的问题总结了三种: 一:可以看到上述的页面,左侧为商品详情二维码,此二维码可以在商城总后台设置,设置时注意格式,要与你的手机端页面链接相同,最后面的id值是你的商品id,如:http ...
最新文章
- 6、WHERE:条件查询数据
- WinForm 之 程序启动不显示主窗体
- iOS开发23:通过归档永久存储数据
- 在WordPress文章中插入表格的四种方法,史上最全
- mongodb简单的增删改查
- GDB调试乱序,出现value optimized out解决方法
- mxnet 训练--如何生成rec 数据 +自己在本机测试的结果
- Kafka之与Spring集成
- python 打印unicode字符串
- 在PPAPI插件中使用Skia绘图
- Mybatis中文文档
- Spring事务原理1-动态代理
- Silvaco仿真学习
- 信息安全-应用安全-SAST、DAST、IAST
- Echarts16 ---散点图-趋势图
- 0.1+0.2 等于 0.3 吗?
- 3D Instance Embedding Learning With a Structure-Aware Loss Function for Point Cloud Segmentation
- 生活实用之清洗小龙虾
- pid控制C语言实现
- 美通企业日报 | 未来20年中国将成全球最大商用飞机买家;九成上班族进行过知识付费...