scrapy-讲解

xpath选取节点常用的标签元素如下。

标记 描述
extract 提取内容转换为Unicode字符串,返回数据类型为list
/ 从根节点选取
// 匹配选择的当前节点选择文档中的节点
. 节点
@ 属性
* 任何元素节点
@* 任何属性节点
node() 任何类型的节点

爬取房天下-前奏

分析
1、网址:url:https://sh.newhouse.fang.com/house/s/。
2、确定爬取哪些数据:1)网页地址:page。2)所在位置名称:name。3)价格:price。4)地址:address。5)电话号码:tel
2、对网页进行分析。

打开url后,可以看到我们需要的数据,然后可以看下面还是有分页的。

可以看到打开url后查看网页元素,我们所要的数据都在一对ul标签内。


打开li一对标签,我们需要的name是在a标签下面的,而且在文本左右有不清楚的空格换行等需要特殊处理。
我们需要的price是在55000标签下面,注意,有的房子被买完了就没有价格显示,这个坑小心踩了。
一次类推我们可以找到对应的address和tel。

分页标签元素可以看到,当前页面的的a的class="active"。在打开主页面是a的文本是1,表示第一页。

爬取房天下-前具体实现过程

先新建scrapy项目
1)切换到项目文件夹:Terminal控制台上面输入 scrapy startproject hotel,hotel是演示的项目名称,可以根据自己需要自定义。
2)根据需要在items.py文件夹下配置参数。在分析中可知需要用到五个参数,分别是:page,name,price,address,tel。配置代码如下:

class HotelItem(scrapy.Item):# 这里的参数要与爬虫实现的具体参数一一对应page = scrapy.Field()name = scrapy.Field()price = scrapy.Field()address = scrapy.Field()tel = scrapy.Field()

3)新建我们的爬虫分支。切换到spiders文件夹,Terminal控制台上面输入 scrapy genspider house sh.newhouse.fang.comhouse是项目的爬虫名称,可以自定义,sh.newhouse.fang.com是爬取的区域选择。
在spider文件夹下面就有我们创建的house.py文件了。
代码实现与解释如下

import scrapy
from ..items import *
class HouseSpider(scrapy.Spider):name = 'house'# 爬取区域限制allowed_domains = ['sh.newhouse.fang.com']# 爬取的主页面start_urls = ['https://sh.newhouse.fang.com/house/s/',]def start_requests(self):for url in self.start_urls:# 回掉函数传的模块名称,没有括号。这是一种约定。yield scrapy.Request(url=url,callback=self.parse)def parse(self, response):items = []# 获取当前页面显示的值for p in response.xpath('//a[@class="active"]/text()'):# extract使提取内容转换为Unicode字符串,返回数据类型为listcurrentpage=p.extract()# 确定最后一页for last in  response.xpath('//a[@class="last"]/text()'):lastpage=last.extract()# 切换到最近一层的标签。//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置  /从根节点选取for each in response.xpath('//div[@class="nl_con clearfix"]/ul/li/div[@class="clearfix"]/div[@class="nlc_details"]'):item=HotelItem()# 名称name=each.xpath('//div[@class="house_value clearfix"]/div[@class="nlcd_name"]/a/text()').extract()# 价格price=each.xpath('//div[@class="nhouse_price"]/span/text()').extract()# 地址address=each.xpath('//div[@class="relative_message clearfix"]/div[@class="address"]/a/@title').extract()# 电话tel=each.xpath('//div[@class="relative_message clearfix"]/div[@class="tel"]/p/text()').extract()# 所有item里面参数要与我们items里面参数意义对应item['name'] = [n.replace(' ', '').replace("\n", "").replace("\t", "").replace("\r", "") for n in name]item['price'] = [p for p in price]item['address'] = [a for a in address]item['tel'] = [s for s in tel]item['page'] = ['https://sh.newhouse.fang.com/house/s/b9'+(str)(eval(p.extract())+1)+'/?ctm=1.sh.xf_search.page.2']items.append(item)print(item)# 当爬取到最后一页,类标签last就自动切换成首页if lastpage=='首页':passelse:# 如果不是最后一页,继续爬取下一页数据,知道爬完所有数据yield scrapy.Request(url='https://sh.newhouse.fang.com/house/s/b9'+(str)(eval(currentpage)+1)+'/?ctm=1.sh.xf_search.page.2', callback=self.parse)

4)在spiders下运行爬虫,Terminal控制台上面输入 scrapy crawl house
结果如下图所示

整体项目结构如右图tts文件夹是我这边用于存储数据的的txt文件。本项目里面可以不需要。

如有发现错误请联系微信:sunyong8860
python的路上爬着前行

python_scrapy_房天下相关推荐

  1. Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化

    Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图.热图可视化 目录 上海十六区,2020年5月份房价实时地图(数据来源房天下)可视化 雷达图.柱 ...

  2. 网易云信携手房天下打造高质量音视频会议

    新冠肺炎自爆发以来,很多企业的日常经营受到不同程度的影响,在此特殊时期,在线办公成为了企业复工的首选之一.来自艾瑞的数据显示,新春期间,中国远程办公企业规模超过1800万家,有超过3亿人进行远程办公. ...

  3. 房天下数据爬取及简单数据分析

    总第64篇 01|明确本次爬虫以及目的: 我是想看看太原的房地产情况,包括楼盘名称.价格.所处区域.评论数(一定程度上可以反映出该楼盘受欢迎程度). 明确了目的以后就该去寻找这些数据的出处,也就是网站 ...

  4. 【JS 逆向百例】房天下登录接口参数逆向

    文章目录 声明 逆向目标 逆向过程 抓包分析 参数逆向 完整代码 fang_encrypt.js fang_login.py 声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产 ...

  5. 网络爬虫--20.【Scrapy-Redis实战】分布式爬虫获取房天下--代码实现

    文章目录 一. 案例介绍 二.创建项目 三. settings.py配置 四. 详细代码 五. 部署 1. windows环境下生成requirements.txt文件 2. xshell连接ubun ...

  6. 爬虫实战-爬取房天下网站全国所有城市的新房和二手房信息(最新)

    看到https://www.cnblogs.com/derek1184405959/p/9446544.html项目:爬取房天下网站全国所有城市的新房和二手房信息和其他博客的代码,因为网站的更新或者其 ...

  7. 爬取房天下新房、二手房房源数据(scrapy-redis分布式爬虫)

    前言 该项目基于Scrapy-Redis框架实现分布式爬虫.其中,我使用了自身电脑(win10)作为redis服务器, WSL虚拟机和一台mac作为爬虫服务器,从而实现分布式爬虫. 环境搭建 开发环境 ...

  8. 房天下二手交易平台房源数据采集

    在许多电商和互联网金融的公司为了更好地服务用户,他们需要爬虫工程师对用户的行为数据进行搜集.分析和整合,为人们的行为选择提供更多的参考依据,去服务于人们的行为方式,甚至影响人们的生活方式.我们的scr ...

  9. 爬虫Scrapy框架运用----房天下二手房数据采集

    在许多电商和互联网金融的公司为了更好地服务用户,他们需要爬虫工程师对用户的行为数据进行搜集.分析和整合,为人们的行为选择提供更多的参考依据,去服务于人们的行为方式,甚至影响人们的生活方式.我们的scr ...

最新文章

  1. [python网络编程]DNSserver
  2. android 获取设备串号,Android获取设备IMEI和Mac地址
  3. python 一个列表转字典_python基础语法:列表和字典
  4. java aio聊天_JAVA aio简单使用
  5. python 元组是什么_python元组是什么?python元组的用法介绍
  6. 2017.9.4 斜堆 失败总结
  7. 全国计算机考试可以异地考吗,公务员省考可以异地考吗
  8. python可以神奇的做什么_可以用 Python 编程语言做哪些神奇好玩的事情?
  9. Android安全开发之ZIP文件目录遍历
  10. 数据分析学习笔记—文件处理与pdf处理
  11. 编写组件,使用JavaScript更新UpdatePanel
  12. 二维数组的空间复杂度_剑指 offer 面试题精选图解 04 . 二维数组中的查找
  13. java 方法(函数)详解
  14. 2022年计算机一级考试网络安全素质教育模拟试题及答案
  15. npm install xxxx --legacy-peer-deps命令是什么?
  16. Unity3d的一些简单坑
  17. 处理行内元素行内块元素中间空隙
  18. IOS 定位 CLLocationManager
  19. 如何在Node.js应用程序中使用RethinkDB
  20. pc控制android源码,pc 通过vnc控制android

热门文章

  1. Dockerfile介绍 和 docker build常用命令介绍
  2. html中form表达中的onsubmit事件
  3. c语言bmp图像均衡化,浅谈应用C语言实现图象灰度的均衡化问题
  4. 业界有哪些峰会?历届峰会又有哪些专家演讲了什么议题?
  5. vscode 调试和远程
  6. 计算机在微电子材料中的应用,新型纳米材料在微电子技术中的应用探究的论文...
  7. 使用PHP导出Excel时处理复杂表头的万能方法
  8. 使用fcrackzip暴力破解zip压缩包
  9. CANDENCE 焊盘封装心得(欢迎拍砖 都来拍砖)
  10. 缓解拖延症的12个小技巧