大家好!我是林英雄。上个月写了一篇关于IP代理的文章,教大家用XPath爬取免费代理IP;前几天发了第二篇文章,这篇文章主要讲的是Scrapy理论知识不错,教大家如何使用scrapy框架爬取北京新发地的行情(理论篇)。今天在这里分享我的第三篇文章,一篇关于Scrapy实际应用的文章。我希望你能喜欢它。前言关于Scrapy理论的知识,可以参考我之前的文章,这里就不赘述了,直接上干货。实战钻取爬取分析首先,我们进入北京新发地价格行情网页,打开开发者工具,如下图所示:经过简单的搜索,我们发现每个getPriceData.html里面存放的是价格行情数据。由此,我们可以通过getPriceData.html获取Data。观察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=1http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t=2http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t=3创建蜘蛛分析北京新发地价格行情之后,接下来我们首先创建一个Scrapy项目,使用如下命令:scrapystartprojectVegetables这样我们就成功创建了一个Scrapy项目,项目文件如下:接下来创建一个蜘蛛爬虫,使用如下命令:scrapygenspidervegetableswww.xinfadi.com.cncreatedvegetables.py内容如下:importscrapyclassVegetablesSpider(scrapy.Spider):name='vegetables'allowed_domains=['www.xinfadi.com.cn']start_urls=['https://www.xinfadi.com.cn']defparse(self,response):传给提取数据前提取数据,我们首先在items.py文件中定义要爬取的数据字段,代码如下:importscrapyclassVegetablesItem(scrapy.Item):#definethefieldsforyouritemherelike:productName=scrapy.Field()lowPrice=scrapy.Field()highPrice=scrapy.Field()这里我们定义了三个字段:productName,lowPrice,highPrice定义好字段后,我们会在里面提取数据创建的vegetables.py文件,具体代码如下importscrapyfromVegetables.itemsimportVegetablesItemclassVegetablesSpider(scrapy.Spider):name='vegetables'allowed_domains=['www.xinfadi.com.cn']defstart_requests(self):foriinrange(1,3):url=f'http://www.xinfadi.com.cn/getPriceData.html?limit=20¤t={i}'yieldscrapy.Request(url=url,callback=self.parse)defparse(self,response):html=response.json()fooddata=html.get('list')foriinfoddata:item=VegetablesItem()item['highPrice']=i.get('highPrice'),item['lowPrice']=i.get('lowPrice'),item['prodName']=i.get('prodName'),yielditem首先我们导入vegetableitem,使用start_requests函数实现翻页。可以使用我们刚才提到的方法来实现翻页。实现翻页后,我们通过编写parse()方法实现数据获取,首先我们将引擎响应的数据以html格式存储在json()中,调用get()方法提取我们想要的数据,最后返回通过yieldgenerator传递给引擎,最后我们在settings.py中设置引擎启动,代码如下:数据库,我们直接启动Spider爬虫,输出csv格式的数据,使用如下命令:scrapycrawlvegetables-o11.c运行结果如下:好了,Scrapy框架爬北京新发地的讲解到此结束,谢谢观看!!!总结大家好,我是林英雄。本文是在上一篇理论文章的基础上,主要分享Scrapy爬虫框架的实战内容。Scrapy是基于Twisted的异步处理框架,纯Python实现的爬虫框架,为提取结构化数据而编写的应用程序框架。其结构清晰,模块间耦合度低,可扩展性极强。【编辑推荐】鸿蒙官方战略合作共建——鸿蒙技术社区任何Ubuntu用户都应该安装的四大Linux应用变废为宝MySQL的三大JOIN子句使用指南AppleiOS15再次迎来更新,此外到直播文,有五个新发现
