手把手教你使用框架来爬取北京新发地价格行情(实战篇)

核心提示「来源: |Python爬虫与数据挖掘 ID:crawler_python」回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤身着白衣,心有锦缎。大家好!我是霖hero。上个月的时候,我写了一篇关于IP代理的文章,手把手教

"来源:| Python crawler和数据挖掘ID: crawler _ python "

回复“书籍”即可获得从初级到高级Python的10本电子书。

现在

太阳

鸡肉

汤

一身白衣,心系锦缎。

大家好!我是林英雄。上个月,我写了一篇关于IP代理的文章,教你如何使用XPath抓取免费代理IP。前几天,我发表了第二篇文章。本文主要讲scrapy的理论知识,教你如何利用Scrapy框架,攀上北京新发地的价格。今天在这里分享我的第三篇文章,关于Scrapy的实际应用。希望你能喜欢。

序

关于Scrapy理论的知识,可以参考我上一篇文章。这里不赘述,直接去干货。

战斗演习

爬升分析

首先,我们进入北京新发地价格报价页面,打开开发者工具,如下图所示:

简单搜索后,发现每个getPriceData.html都存储价格数据。由此,我们可以通过getPriceData.html获得数据。

观察Headers请求,如下图所示:

发现是POST请求,请求的URL链接是file/tupian/20220910/403;JSESSIonID=8ad8b7a9-4881-4325-98a7-1f56eefb66f0 '20 ',' current':page}

通过剪贴簿将消息体传入参数。请求方法。

或者我们可以根据测试和观察的规则自己构造URL链接。通过观察和分析,请求的URL链接可以是:

file/tupian/20220910/getPriceData.html limit = 20 current = 1 http://www . xinfadi . com . cn/getpricedata . html limit = 20 current = 2 http://www . xinfadi . com . cn/getpricedata . html limit = 20 current = 3

创建蜘蛛爬行器

在分析了北京新发地的价格后,我们首先创建一个Scrapy项目并使用以下命令:

scrapy项目蔬菜

就这样,我们成功地创建了一个Scrapy项目。项目文件如下:

接下来,创建爬行器并使用以下命令:

scrapygenspidervegetableswww.xinfadi.com.cn

创建后的vegetables.py的内容如下:

import scrapyclasssvegetablespider:name = ' vegetables ' allowed _ domains =[' www . xinfadi . com . cn ']start _ URLs =[' https://www . xinfadi . com . cn ']def parse:pass

提取数据

在提取数据之前,我们先在items.py文件中定义要抓取的数据字段,代码如下:

importscrapyclassgepitableitem:#在此定义项目的字段,如:productName = scrapy。FieldlowPrice=scrapy。FieldhighPrice = scrapy。田

我们在这里定义了三个字段,即productName、lowPrice和highPrice。

定义字段后,将从创建的vegetables.py文件中提取数据。具体代码如下

import scrapy from vegetables . items import vegetables item class vegetables spider:name = ' vegetables ' allowed _ domains =[' www . xinfadi . com . cn ']def start _ requests:for I in range:URL = f ' http://www . xinfadi . com . cn/getpricedata . html limit = 20 current = { I } ' yield scrapy。requestdefparse:html = response . jsonfooddata = html . get for I in food data:item = vegetables item item[' high price ']= I . get,item['lowPrice'] = i.get,item['prodName'] = i.get,yield item

首先,我们导入vegetablesitem并使用start_requests函数来翻页。你可以用我们刚才说的方法来翻页。翻页后,我们可以通过编写解析方法来获取数据。首先我们将引擎响应的数据以json格式存储在html中,调用get方法提取我们想要的数据,最后通过yield generator返回给引擎。

最后,我们在settings.py中设置引擎的启动,代码如下:

ITEM _ PIPELINES = { ' vegetables . PIPELINES . vegetables pipeline ':300,}

在这里,我们不将数据保存在MongoDB数据库中。我们使用以下命令直接启动Spider crawler并以csv格式输出数据:

scrapycrawlvegetables-o 11.c

运行结果如下:

好了,Scrapy框架爬北京新发地就这样了。感谢观看!!!

摘要

大家好,我是林英雄。本文在之前理论文章的基础上,主要分享Scrapy爬虫框架的实战内容。Scrapy是一个基于Twisted的异步处理框架,是一个用纯Python实现的爬虫框架,是一个为提取结构化数据而编写的应用框架。其架构清晰,模块间耦合度低,可扩展性极强。

 
友情链接
鄂ICP备19019357号-22