一个简单的Scrapy项目(房天下)

首先通过命令创建一个Scrapy项目 scrapy startproject xxxx

创建完后通过pycharm软件打开

之后通过命令创建py文件 指定到你想要爬取的网址 scrapy genspider xxx(想要命名的名字) xxx(网址)

生成了对应的py文件

 现在应该开始对网站进行分析,通过F12打开网站的检查页面 之后利用快捷箭头定位到每一个房屋信息,通过观察可以知道每一个房屋信息都是一个独立的

 之后在通过快捷定位到他的名字 价格 这里我们先举名字和价格为例 后面自己需要哪些可自行写,依葫芦画瓢即可。

 这里就得到了他的位置 然后回到pycharm进行编写代码 

我们首先应该编辑item.py文件 这里面要储存我们需要的字段 例子中我需要的是名字(name) 价格(price) 照片(url)这三个字段所有我们只需要定义三个字段 可以根据自己的需求进行修改

之后编写esc.py文件进行具体数据提取代码书写 首先需要将我们定义的字段引入

from fangtianxia.items import FangtianxiaItem 通过此代码进行引入y

因为每一个房价信息都是一个独立的dl 所以我们通过xpath方法定位到他的位置,然后通过循环的方法就可以得到每一个房屋信息 因为每个房屋的信息都是一致的所以我们只需要对其中一个进行分析其他的通过循环便可以实现了 通过定位价格的位置 其他的同意即可 对于照片我们只需要提取到他们的url 之后怎么保存 后面会说

 

 在编写完代码后最好先用print输出一下结果看自己的xpath语句写的是否正确 执行项目代码是 

scrapy crawl xxx(就是当初生成esc.py文件的名字我这里是esc)

 这时候利用我们item.py导入的字段 他相当于一个储存器 将数据存入其中

此时我们已经将我们的数据导入到一个一个字典中了 我们用yield item 就是将我们的数据传到管道文件(pipelines.py)进行储存 此时我们就需要去(pipelines.py)进行编写储存代码

 进入pipelines.py 首先定义第一个数据类 首先打开一个sj.json文件这里你也可以换成sj.csv...

之后通过json方法将他进行解码 然后将数据解析写入文件 

另一个Imag是照片列你只需要提供url即可 他要继承特定的照片库 需要提前导入,

写其他的项目时候这个是通用的 copy即可

 编写完类之后到seeting文件去设置 IMAGES_STORE=‘xxxx’ 代表你照片存放的路径ITEM_PIPELINES 他本来是注释的你需要把他取消注释 并且你如果在piplines.py文件中你定了几个类 这里面你就需要写下对应的 这代表你要进行开启通道

之后使用scrapy crawl esc 执行代码就可以得到数据了

 这样就得到数据了 

还有一个翻页功能 就是你点击下一页在观察他的url变化

https://cs.esf.fang.com/house/i34/ 你会发现只有i34 i35 i36 只有最后一个数字在变化

所以你只要循环变化这个数字即可 但是scrapy 提供了一个重写开头的方法

通过自己构建url 然后通过scrapy.Request请求的方法 将url放入 callback代表你需要调用的函数

因为所以页的结构都是一样的所以可以直接用我们下面解析的代码parse方法 这个时候我们就实现了翻页的功能 之后再用执行代码执行即可 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值