手把手教你使用scrapy框架来爬取北京新发地价格行情(实战篇)
来源:Python爬虫与数据挖掘
作者:霖hero前言
关于Scrapy理论的知识,可以参考我的上一篇文章,这里不再赘述,直接上干货。实战演练爬取分析
首先我们进入北京新发地价格行情网页并打开开发者工具,如下图所示:
经过简单的查找,发现每个getPriceData.html存放着价格行情的数据,由此可得,我们可以通过getPriceData.html来进行数据的获取。
观察Headers请求,如下图所示:
发现它是POST请求,请求URL链接是http://www.xinfadi.com.cn/getPriceData.html,current是翻页的重要参数,limit是每页有多少行数据,我们可以构造消息体,代码如下所示:data={ "limit": "20", "current":page }
通过scrapy.Request()方法将消息体传入到参数里面。
或者我们可以根据测试和观察规律,自己构造URL链接,通过观察分析,请求的URL链接可以为:http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t=1 http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t=2 http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t=3创建Spider爬虫
分析北京新发地价格行情后,接下来我们首先创建一个Scrapy项目,使用如下命令:scrapy startproject Vegetables
这样我们就成功创建了一个Scrapy项目,项目文件如下所示:
接下来创建spider爬虫,使用如下命令:scrapy genspider vegetables www.xinfadi.com.cn
创建后vegetables.py内容如下所示:import scrapy class VegetablesSpider(scrapy.Spider): name = "vegetables" allowed_domains = ["www.xinfadi.com.cn"] start_urls = ["https://www.xinfadi.com.cn"] def parse(self, response): pass提取数据
在提取数据前,我们首先把要爬取的数据字段在items.py文件中定义好,代码如下所示:import scrapy class VegetablesItem(scrapy.Item): # define the fields for your item here like: productName = scrapy.Field() lowPrice=scrapy.Field() highPrice=scrapy.Field()
这里我们定义了三个字段分别是productName、lowPrice、highPrice
定义好字段后,接下来将在创建的vegetables.py文件中进行数据的提取,具体代码如下import scrapy from Vegetables.items import VegetablesItem class VegetablesSpider(scrapy.Spider): name = "vegetables" allowed_domains = ["www.xinfadi.com.cn"] def start_requests(self): for i in range(1, 3): url = f"http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t={i}" yield scrapy.Request(url=url, callback=self.parse) def parse(self, response): html = response.json() fooddata = html.get("list") for i in fooddata: item=VegetablesItem() item["highPrice"] =i.get("highPrice"), item["lowPrice"] = i.get("lowPrice"), item["prodName"] = i.get("prodName"), yield item
首先我们导入vegetablesitem,使用start_requests函数实现翻页,大家可以使用刚才我们所讲的方法实现翻页,实现翻页后,我们通过编写parse()方法实现数据的获取,首先我们把引擎响应的数据以json()格式存放在html里面,调用get()方法来提取我们想要的数据,最后通过yield生成器返回给引擎。
最后我们在settings.py设置引擎的启动,代码如下所示:ITEM_PIPELINES = { "Vegetables.pipelines.VegetablesPipeline": 300, }
在这里我们就不保存数据在MongoDB数据库里面了,我们直接启动Spider爬虫并把数据以csv格式输出,使用如下命令:scrapy crawl vegetables -o 11.c
运行结果如下:
好了,Scrapy框架爬取北京新发地就讲解到这里了,感谢观看!!!总结
大家好,我是霖hero。这篇文章基于上篇理论文章,主要给大家分享了Scrapy爬虫框架的实战内容,Scrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,是提取结构性数据而编写的应用框架,其架构清晰,模块之间的耦合程度低,可扩展性极强。
五行缺水的人房屋装修要注意什么?每一个人的五行布局从出世那一刻起就早已决策好啦,为了更好地追求完美五行的均衡进而做到八字命理上的健全,就需要根据五行相生相克的基本原理从一些层面来配制,那麼,五行缺水的人到装修房屋
翘首期盼,2021西安第47届蓝装家博会时间已定翘首期盼,由陕西蓝装丝路会展有限公司承办,社会各界给予支持的中国西安第47届蓝装家博会于8月2022日,即将在浐灞西安国际会展中心盛大举办,这将是本年度最受关注的一次秋季大展!备受
金秋大展,蓝装家博会新增6个城市再战辉煌互联网时代传统零售迎来了冰点期,如何突破当下的困境,近年来,会展行业异军突起逐渐成熟,打破了传统行业的局限性。聚集全行业多品牌商,为消费者提供一站式需求,俨然成为新经济趋势。蓝装家
2021西安第46届蓝装家博会完美收官展商业主双赢而归6月13日,为期2天的西安第46届蓝装家博会在浐灞西安国际会展中心完美落下帷幕。在2天的展期里,现场汇聚了500家装大牌,10万爆款产品,吸引了约上万人次业主进场逛购消费,记者从方
天呐!还有人不知道装修完要成品保护吗?装修成品保护,是装修中一个非常关键不可忽略的一个项目。如果装修成品保护没做好,比如地砖如今房屋质量,特别是感观质量的好坏,不仅与工程建设材料施工工艺工人技术环境等有关,而且还受成品
关键词装修用壁纸好还是刷漆好?墙面的装饰方法多样,其中为普及的就是刷漆和贴壁纸这两种方式了!我们都知道,对于小户型来说,合理的装饰方法对于房屋整体所起到的效果是非常大的,那么在进行墙面装饰的时候究竟哪种方法更为
硬核来袭8。2122日蓝装婚博会即将为你开启盛宴引领婚嫁新时尚聚焦品牌新风向蓝装婚博会即蓝装婚庆博览会,是以婚礼策划婚宴酒店婚纱摄影婚纱礼服婚庆礼品婚车租赁结婚首饰等为主题的展览会,一站式满足婚礼所需环节,能为筹婚新人提供高水准
直击家博会太原第4届蓝装家博会正在火爆进行中与时代同行,见证行业辉煌!2021年7月1718日太原第4届蓝装家博会于太原煤炭交易中心如期举办。我在家博会现场,你来了吗?实名预约或现场购票,戴好口罩,扫码亮码等,做好了一系列防
家博会直击西安第46届蓝装家博会火爆进行中年中汇聚,人气爆棚!今日(6月12日),备受全西安市民瞩目的西安第46届蓝装家博会终于在浐灞西安国际会展中心盛大开幕了,现场人潮涌动,20000的展馆汇聚了500家装大牌,涵盖了陶
在跨界中发现价值风投眼中的2020农业科技投资趋势资本实验室今日投资关注聚焦前沿科技创新与传统产业升级张珂过去十年间,在物联网大数据无人机机器人人工智能等新技术的加持下,传统农业已经努力向数字化智能化方向转型。越来越多的农民开始依
这些公司正在通过新技术推动智慧城市与公共安全建设资本实验室今日创新观察聚焦前沿科技创新与传统产业升级智慧城市正在成为全球城市发展的重要方向,而公共安全则是智慧城市的一个重要领域。在这一新的背景之下,随着传感器物联网大数据和人工智