优化某buff csgo饰品
scrapy获取网易buff饰品信息继上一次的版本,继续优化。
在后期的测试当中,发现无法实现断点续爬的功能,观察发现和我们自己设置的url有关系(自己挖的坑自己跳),具体部分的代码如下,arms.py文件中。
base_data['biglable_link'] = 'https://buff.163.com/api/market/goods?game=csgo&page_num=1&category_group={}&use_suggestion=0&trigger=undefined_trigger&_={}'.format(base_data['value'], int(time.time() * 1000))# 和
next_url = 'https://buff.163.com/api/market/goods?game=csgo&page_num={}&category_group={}&use_suggestion=0&trigger=undefined_trigger&_={}'.format(page, base_data['value'], int(time.time() * 1000))
在上一次的文章中有考虑到服务器是否会验证url当中的时间戳,因为每一次带上新的时间戳返回的数据页面都不相同,刚刚自己试了一下发现不带时间戳的影响并不大,这也就倒置每一次请求的url都会带上当前的时间戳,每一次都在变化。而我们的断点续爬的原理就是对url进行去重,这也就倒置断点续爬功能的失效。
进行如下操作,修改我们的arms.py和setting.py文件,删除url当中的时间戳,修改翻页的规则,之前的翻页存在问题,lpush新的request后直接被pop了。
class ArmsSpider(scrapy.Spider):name = 'arms'allowed_domains = ['buff.163.com']start_urls = ['https://buff.163.com/market/csgo']def parse(self, response):node_list = response.xpath('//*[@class="h1z1-selType type_csgo"]/div')for node in node_list:base_data = {}base_data['biglabel'] = node.xpath('.//p/text()').get()base_data['value'] = node.xpath('.//p/@value').get()base_data['biglable_link'] = 'https://buff.163.com/api/market/goods?game=csgo&page_num=1&category_group={}&use_suggestion=0&trigger=undefined_trigger'.format(base_data['value'])cookie = '_ntes_nnid=2168b19b62d64bb37f40162a1fd999cf,1656839072318; _ntes_nuid=2168b19b62d64bb37f40162a1fd999cf; Device-Id=zteGfLiffEYmzr7pzqXn; _ga=GA1.2.1822956190.1656920597; vinfo_n_f_l_n3=4f2cffc01c7d98e1.1.0.1657365123345.0.1657365133193; hb_MA-8E16-605C3AFFE11F_source=www.baidu.com; hb_MA-AC55-420C68F83864_source=www.baidu.com; __root_domain_v=.163.com; _qddaz=QD.110858392929324; P_INFO=18958675241|1658722544|1|netease_buff|00&99|null&null&null#gux&450300#10#0|&0||18958675241; remember_me=U1095406721|LG3tz94sUOGVVIXZQjo8lJ1AwzVQbaMk; session=1-AUb3OJyXgFPRIXA0K2S1FiSg4UJqurpwwPEb4RrAolCS2038696921; Locale-Supported=zh-Hans; game=csgo; Hm_lvt_eaa57ca47dacb4ad4f5a257001a3457c=1656920596,1658582225,1658721676,1658818477; Hm_lpvt_eaa57ca47dacb4ad4f5a257001a3457c=1658819822; csrf_token=Ijc0OWRkYzY5YTY1ZGE3MzU3MmIzOWFmNTM3NGJiNGEzMmY3MDlkNjQi.FcEmeA.YCnFQ4ERqsIOrs47b6Jtu6e7IKk'cookies = {data.split('=')[0]: data.split('=')[1] for data in cookie.split(';')}yield scrapy.Request(url=base_data['biglable_link'],callback=self.parse_img,meta={'base_data': base_data},cookies=cookies,)def parse_img(self, response):base_data = response.meta['base_data']json_data = json.loads(response.text)id = jsonpath.jsonpath(json_data, '$..items[*].id')name = jsonpath.jsonpath(json_data, '$..items[*].name')market_name = jsonpath.jsonpath(json_data, '$..items[*].market_hash_name')price = jsonpath.jsonpath(json_data, '$..items[*].sell_min_price')exterior_wear = jsonpath.jsonpath(json_data, '$..info.tags.exterior.localized_name')quality = jsonpath.jsonpath(json_data, '$..info.tags.quality.localized_name')rarity = jsonpath.jsonpath(json_data, '$..info.tags.rarity.localized_name')type = jsonpath.jsonpath(json_data, '$..info.tags.type.localized_name')weapon_type = jsonpath.jsonpath(json_data, '$..info.tags.weapon.localized_name')for i in range(len(id)):item = BuffItem()item['biglabel'] = base_data['biglabel']item['biglabel_link'] = base_data['biglable_link']item['id'] = id[i]item['name'] = name[i]item['market_name'] = market_name[i]item['price'] = price[i]if not exterior_wear:item['exterior_wear'] = ''else:item['exterior_wear'] = exterior_wear[i]if not quality:item['quality'] = ''else:item['quality'] = quality[i]if not rarity:item['rarity'] = ''else:item['rarity'] = rarity[i]if not type:item['type'] = ''else:item['type'] = type[i]if not weapon_type:item['weapon_type'] = ''else:item['weapon_type'] = weapon_type[i]yield itempages = jsonpath.jsonpath(json_data, '$.data.total_page')[0]for page in range(1, pages+1):next_url = 'https://buff.163.com/api/market/goods?game=csgo&page_num={}&category_group={}&use_suggestion=0&trigger=undefined_trigger'.format(page, base_data['value'])base_data['biglable_link'] = next_urlcookie = '_ntes_nnid=2168b19b62d64bb37f40162a1fd999cf,1656839072318; _ntes_nuid=2168b19b62d64bb37f40162a1fd999cf; Device-Id=zteGfLiffEYmzr7pzqXn; _ga=GA1.2.1822956190.1656920597; vinfo_n_f_l_n3=4f2cffc01c7d98e1.1.0.1657365123345.0.1657365133193; hb_MA-8E16-605C3AFFE11F_source=www.baidu.com; hb_MA-AC55-420C68F83864_source=www.baidu.com; __root_domain_v=.163.com; _qddaz=QD.110858392929324; P_INFO=18958675241|1658722544|1|netease_buff|00&99|null&null&null#gux&450300#10#0|&0||18958675241; remember_me=U1095406721|LG3tz94sUOGVVIXZQjo8lJ1AwzVQbaMk; session=1-AUb3OJyXgFPRIXA0K2S1FiSg4UJqurpwwPEb4RrAolCS2038696921; Locale-Supported=zh-Hans; game=csgo; Hm_lvt_eaa57ca47dacb4ad4f5a257001a3457c=1656920596,1658582225,1658721676,1658818477; Hm_lpvt_eaa57ca47dacb4ad4f5a257001a3457c=1658819822; csrf_token=Ijc0OWRkYzY5YTY1ZGE3MzU3MmIzOWFmNTM3NGJiNGEzMmY3MDlkNjQi.FcEmeA.YCnFQ4ERqsIOrs47b6Jtu6e7IKk'cookies = {data.split('=')[0]: data.split('=')[1] for data in cookie.split(';')}yield scrapy.Request(url=next_url,callback=self.parse_img,meta={'base_data': base_data},cookies=cookies,)
当我们暂停后,会从request中提取任务继续跑,消耗request队列中的url,而不会从头开始。
优化某buff csgo饰品相关推荐
- 爬取网易buff CSGO饰品数据 - 优化篇
文章目录 思路回顾 配置优化 RawConfigParser 处理配置列表 价格取舍 价格过滤 饰品类别限定 内部实现优化:结合价格筛选和饰品类别筛选 其他限定? 命名 The End 继上周末搞了c ...
- python爬虫实战-网易BUFF CSGO饰品
python爬虫实战-网易BUFF CSGO饰品 寒假迷上了csgo,一方面对这个纯粹的枪战游戏着迷,另一方面对精美的饰品着迷.众所周知,csgo是个理财游戏饰品游戏,能够掌握到喜欢饰品的价格就可以得 ...
- 爬取网易buff CSGO饰品数据
文章目录 需要的东西 API 获取所有饰品 获取每一个类别的饰品 获取所有饰品的steam售价 总结一下 模拟登录 防止ip被封 其他问题 价格区间限制 平均售价 多次爬取 冷门饰品过滤 关于stea ...
- 某Buff CSGO饰品信息获取
自己也打csgo,就想着抓个全站数据用于可视化和预测分析,直接开始撸. 本篇文章将带你从抓包分析到分析数据加载方式以及网页结构分析再到代码实现爬虫获取数据. 本篇文章使用到redis,mysql以及s ...
- incsgo 可直接立刻取回皮肤的CSGO饰品皮肤开箱网站
incsgo业内最专业的CSGO饰品交易平台.CSGO游戏道具交易,CSGO开箱取回,CSGO皮肤交易,唯一能立即取回的CSGO开箱平台,方便快捷的CSGO游戏道具交易,便捷.安全.诚信的服务,为您提 ...
- incsgo 可直接取回最好的国内CSGO饰品皮肤开箱网站
incsgo 可直接取回最好的国内CSGO饰品皮肤开箱网站 官方链接: www.incsgo.gg 注册登录自动免费获得$1.00美金 取回状态: 直接取回 优惠码: csgogo (充值使用 csg ...
- skinsdog 狗网支持马上直接取回CSGO饰品皮肤开箱网站
skinsdog 狗网支持马上直接取回CSGO饰品皮肤开箱网站 官方链接: skinsdog.cc 注册登录自动免费获得$0.8美金 推广码: csgogo (注册使用送0.8美金) 支付: 微信 支 ...
- skinsdog 狗网官网CSGO饰品皮肤开箱网站可直接取回
skinsdog 狗网官网CSGO饰品皮肤开箱网站可直接取回 官方链接: skinsdog.cc 注册登录自动免费获得$0.8美金 推广码: csgogo (注册使用送0.8美金) 支付: 微信 支付 ...
- skinsdog 狗网CSGO饰品皮肤开箱网站可取回的开箱网站
skinsdog 狗网CSGO饰品皮肤开箱网站可取回的开箱网站 官方链接: skinsdog.cc 注册登录自动免费获得$0.8美金 取回状态: 直接取回 **优惠码:**csgogo (注册使用送0 ...
最新文章
- 使用LOAD DATA和INSERT语句导入Mysql数据
- 面试官问 async、await 函数原理是在问什么?
- execel公式 java工具_PAP-快速开发框架:JAVA 计算器 自定义公式 解决EXCEL计算公式问题...
- Python chr / ord 函数区别和使用 - Python零基础入门教程
- python处理大文件_Python如何处理大文件(知识整理)
- mybatis 多表查询-多对多
- [翻译]RoboChamps城市挑战赛
- 数字后端基本概念介绍<Endcap Cell>
- 关于模型转向自然化思考
- sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别(转)
- 锐浪报表 Grid++Report 模板文件的读取
- 万字拆解Ubras:年销15亿、暴涨10倍,内衣新秀的春天到了?
- 基于ZFC公理系统的无穷小微积分学
- [Unity][C#]Regex正则表达式判断字符串
- 星际文件系统(InterPlanetary File System,缩写IPFS)
- 2018_WWW_DKN- Deep Knowledge-Aware Network for News Recommendation阅读笔记
- Hadoop第四天--shell编程
- MYSQL进阶(一)
- c语言模拟计算机指令流程图,家居分布式温度监测报警系统-传感器课程设计报告 带程序及仿真全套资料...
- 基于像元二分模型的植被覆盖度反演
热门文章
- 字符串哈希(魔咒词典hdu1880)
- Mysql启动失败 InnoDB: auto-extending data file ./ibdata1 is of a different size 640
- 「数据结构与算法」哈希算法的原理和应用详解
- Ubuntu16.04 windows共享打印机的使用
- 数据库的发展(小论文)
- 电脑经常卡死,为什么?
- ParagraphStyle(name=TitleStyle, fontName=hei, fontSize=48, alignment=TA_LEFT)这个实例化,如何在Paragraph中...
- python模拟10086查询功能
- Python保存数据到文件的方法
- 反序列化时,java类需要无参构造函数