【Python-爬虫】使用scrapy框架实现租房数据爬取

   日期:2024-12-29    作者:zf3oj 移动:http://oml01z.riyuangf.com/mobile/quote/79975.html

目录

一.创建

二.写代码

1.将roboots协议一脚踹飞

2.在创建的爬虫文件中写爬虫的代码

 3.代码

4.翻页


在文章里展示全部的代码的话会非常影响文章的观看,有想要查看全部代码的朋友请到GitHub:https://github.com/aqaswrae/Some-small-crawler-projects

这个就是 

首先要创建scrapy项目和爬虫文件,若有疑问,请看scrapy框架的基本使用这一篇文章

链接:Python爬虫-Scrapy框架的基本使用_瓦瓦卡卡的博客-CSDN博客

也是我写的🤭🤭

写代码的第一步:就是先更改roboots协议

找到settings.py文件,将20行的roboots协议注释掉或者直接将其删除

             

我创建的爬虫文件名为 lianjia.py,所以就要在这个文件中写爬虫代码

         

我这次爬取的是链家上的租房数据。https://qd.lianjia.com/zufang/

首先要想好要爬取哪些数据,并在items.py文件中做好数据建模

              

 

                        

 scrapy框架内置了xpath语法,所以我们使用xpath语法来获取所需的数据

 

                       

 注意:获取数据时,不能单纯的使用xpath语法,要在语句的后边加上extract()才能获取到具体的数据,否则获取到的只是相应内容的对象。

要是觉得写一行获取数据的代码就运行一遍爬虫文件很麻烦的话,建议使用scrapy shell来调试程序,具体操作可以看一下这篇文章的 6.scrapy shell 的使用

Python爬虫-Scrapy框架的基本使用_瓦瓦卡卡的博客-CSDN博客

                        

                     

 然后在爬虫文件中导入items.py文件中的类,用来实例化一个item对象,将获得的数据传给这个对象

                   

                         

给数据时,键名必须和数据建模时设置的字段名相同 ;要使用yield将数据返回,这是框架规定好了的,不能使用return,会中断循环

 

                          

 在pipelines.py文件中接收传送过来的数据,将其转换成字典

如果要使打印或保存数据成功,要先将settings.py文件中的管道打开

                   

 

                      

 这样就可以正常打印和保存数据了。在pipelines.py文件中

                 

                           

 接下来我们将这些数据保存到json文件中

 

 这样我们的租房数据就保存完成了。

如果数据乱码的话,点击一下右上角提示中的’gbk‘,使用gbk编码打开。

当你去找页面最底下的下一页的超链接的时候

                                   

在元素这个页面中会显示,但是我们要以返回的源码中的数据为准,源码中只有这么一行,是下一页这个a标签的父标签。

                         

                             

 思路一

获取父标签div中的data-totalPage(总页数)属性和data-curPage(当前页)属性,然后将url的前一部分https://qd.lianjia.com/zufang/pg与(当前页+1)拼接起来构成下一页完整的url

                        

 
 

                         

 这个方法不能将第二个图片中的代码写在if判断语句中(我用来判断是否已经到了第100页),亲测,只能输出第二页完整的url。

我暂时还不知道原因,等我明白了再来写上。

同一天内,我找到原因了,获取到的total_page 和 current_page都是字符串类型的,进行if判断时要转换为int类型

                               

       

完整的函数内容

 

 

                        

思路二

获取ul标签中的所有链接,然后循环构造请求对象,返回给引擎

                     

       

 


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号