Scrapy实例__链家租房爬虫
Scrapy实例__链家租房爬虫
创建爬虫项目
scrapy startproject lianjia_zf
定义爬取的数据项
import scrapyclass LianjiaZfItem(scrapy.Item):title = scrapy.Field() # 标题update_time = scrapy.Field() # 房源更新时间price = scrapy.Field() # 月租tags = scrapy.Field() # 标签rent_method = scrapy.Field() # 出租方式house_type = scrapy.Field() # 房屋类型towards_and_floor = scrapy.Field() # 朝向楼层basic_info = scrapy.Field() # 房屋信息supporting_facilities = scrapy.Field() # 配套设施description = scrapy.Field() # 房源描述url = scrapy.Field() # 详情页链接
编码spider爬取数据
# -*- coding: utf-8 -*-
import scrapy
from items import LianjiaZfItemclass LianjiaSpider(scrapy.Spider):name = 'lianjia'allowed_domains = ['lianjia.com']start_urls = ['https://sz.lianjia.com/zufang/']def parse(self, response):house_items = response.xpath('//*[@id="content"]/div[1]/div[1]/child::div')for house_item in house_items:href_xpath = './a/@href'house_url = house_item.xpath(href_xpath).get()if "zufang" in house_url:yield scrapy.Request(response.urljoin(house_url), callback=self.parse_details)next_page = response.xpath('//*[@id="content"]/div[1]/div[2]/a[6]/@href').get()if next_page:yield response.follow(next_page, callback=self.parse)def parse_details(self, response):item = LianjiaZfItem()item['url'] = response.urltitle_xpath = '//p[@class="content__title"]/text()'item['title'] = response.xpath(title_xpath).get().strip()update_time_xpath = '//div[@class="content__subtitle"]/text()'item['update_time'] = response.xpath(update_time_xpath).get().split(':')[-1].strip()price_xpath = '//div[@class="content__aside--title"]/span//text()'unit_xpath = '//div[@class="content__aside--title"]/text()'item['price'] = response.xpath(price_xpath).get().strip() + \response.xpath(unit_xpath).getall()[1].split(' ')[0].strip()tags_xpath = '//p[@class="content__aside--tags"]//text()'item['tags'] = [item.strip() for item in response.xpath(tags_xpath).getall() if item.strip()]rent_xpath = '//*[@id="aside"]/ul[1]//li/text()'rent_data = response.xpath(rent_xpath).getall()item['rent_method'] = rent_data[0].strip()item['house_type'] = rent_data[1].strip()item['towards_and_floor'] = rent_data[2].strip()basic_info_xpath = '//*[@id="info"]//li/text()'basic_infos = response.xpath(basic_info_xpath).getall()basic_info = {}for bi in basic_infos:if ':' in bi:basic_info[bi.split(':')[0].strip()] = bi.split(':')[1].strip()item['basic_info'] = basic_infosupporting_facilities_xpath = '//ul[@class="content__article__info2"]/li[@class="fl oneline "]/text()'supporting_facilities = [item.strip() for item in response.xpath(supporting_facilities_xpath).getall() if item.strip()]item['supporting_facilities'] = supporting_facilitiesdescription_xpath = '//p[@data-el="houseComment"]/@data-desc'description = response.xpath(description_xpath).get()item['description'] = description.strip() if description else ''return item
编写pipeline处理数据
import pymongoclass LianjiaZfPipeline(object):def __init__(self, MONGO_HOST, MONGO_PORT, MONGO_DB, MONGO_COL):self.MONGO_HOST = MONGO_HOSTself.MONGO_PORT = MONGO_PORTself.MONGO_DB = MONGO_DBself.MONGO_COL = MONGO_COL@classmethoddef from_crawler(cls, crawler):return cls(MONGO_HOST=crawler.settings.get('MONGO_HOST'),MONGO_PORT=crawler.settings.get('MONGO_PORT'),MONGO_DB=crawler.settings.get('MONGO_DB'),MONGO_COL=crawler.settings.get('MONGO_COL'))def open_spider(self, spider):self.client = pymongo.MongoClient(host=self.MONGO_HOST, port=self.MONGO_PORT)self.col = self.client[self.MONGO_DB][self.MONGO_COL]def process_item(self, item, spider):find = {'url': item['url']}self.col.update(find, {'$set': item}, upsert=True)return itemdef close_spider(self, spider):self.client.close()
修改配置
MONGO_HOST = '*.*.*.*'
MONGO_PORT = 27017
MONGO_DB = 'House'
MONGO_COL = 'lianjia_zf'DOWNLOAD_DELAY = 1
AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 5
AUTOTHROTTLE_MAX_DELAY = 60
AUTOTHROTTLE_TARGET_CONCURRENCY = 2.0
启动爬虫
新建run.py
from scrapy import cmdlinecmdline.execute("scrapy crawl lianjia".split())
python run.py
代码地址:
https://github.com/czk512042/scrapy/tree/master/lianjia_zf/lianjia_zf
Scrapy实例__链家租房爬虫相关推荐
- 链家租房市场分析(R爬虫、数据可视化)
链家租房市场数据分析 文章目录 链家租房市场数据分析 前言 待解决的问题 链家网数据爬取 租房数据整理 租金.面积.户型的数据可视化 结论 前言 近年来,持续高昂的房价将很多想要安身立命的人挡在了买房 ...
- 数据挖掘与数据分析项目链家租房数据(一)数据爬虫
数据挖掘与数据分析项目链家租房数据(一)数据爬虫 今日无聊将一个过去做的链家数据分析项目弄上来,当时是某面试,三天时间完成,主要是供大家抄代码和分享一下思考点,这一章是爬虫部分. 网站原图 结果截图 ...
- python爬虫--爬取链家租房信息
python 爬虫-链家租房信息 爬虫,其实就是爬取web页面上的信息. 链家租房信息页面如下: https://gz.lianjia.com/zufang/ ## python库 Python库 1 ...
- 利用xpath爬取链家租房房源数据并利用pandas保存到Excel文件中
我们的需求是利用xpath爬取链家租房房源数据,并将数据通过pandas保存到Excel文件当中 下面我们看一下链家官网的房源信息(以北京为例) 如图所示,我们通过筛选得到北京租房信息 那么我们需要将 ...
- PYTHON链家租房数据分析:岭回归、LASSO、随机森林、XGBOOST、KERAS神经网络、KMEANS聚类、地理可视化...
全文下载链接:http://tecdat.cn/?p=29480 作者:Xingsheng Yang 1 利用 python 爬取链家网公开的租房数据: 2 对租房信息进行分析,主要对房租相关特征进行 ...
- 简单的链家租房数据分析
链家租房数据分析 以北京链家租房数据为例进行以下数据分析 对"户型"."面积"和"价格"以及每平米价格等信息进行简要的统计分析,如每平米价格 ...
- 爬取南京链家租房信息
爬取南京链家租房信息 代码如下 代码片. import requests from lxml import etree if name == "main": #设置一个通用URL模 ...
- 爬虫实例5:使用scrapy框架获取链家网二手房最新信息(获取单个城市所有街区二手房信息可以使用selenium动态获取页数)
1-首先进行分析链家网 链家网址:https://www.lianjia.com/city/ 获取省市 2-创建文件 打开虚拟机或者powershell 执行命令scrapy startproject ...
- 爬虫实战:链家租房数据爬取,实习僧网站数据爬取
前面已经进行了爬虫基础部分的学习,于是自己也尝试爬了一些网站数据,用的策略都是比较简单,可能有些因素没有考虑到,但是也爬取到了一定的数据,下面介绍两个爬过的案例. 爬虫实战 链家网站爬取 实习僧网站爬 ...
- 基于Scrapy的链家二手房爬虫
摘要 本项目是python课程的期末练手项目,在简要学习完python和爬虫相关的Scrapy框架后,基于这两者的运用最终完成了对于链家网站二手房页面的信息进行爬取,并将爬取的数据存放于MongoDB ...
最新文章
- PHP Warning: File upload error - unable to create a temporary file in Unknown on line 0
- 【深度学习】一个应用—肝脏CT图像自动分割(术前评估)
- 让你的apache支持Perl
- 总结运行SSIS包的几种方式
- 程序猿修仙之路--数据结构之你是否真的懂数组?
- 多云互操作性!=云服务聚合
- javascript函数式_JavaScript中的函数式编程—结合实际示例(第2部分)
- Linux zip加密压缩
- 富士康海外工厂遭黑客攻击 被勒索1804枚比特币
- 配置使用Powershell管理Azure Stack
- Python3-笔记-E-012-库-JSON
- 12.这就是搜索引擎:核心技术详解 --- 搜索引擎发展趋势
- Asp.net core WebApi 使用Swagger生成帮助页实例
- Fastreport VCL 4.15.6 for Delphi 4 ~ XE 5
- 用Java给您的图片瘦身之Thumbnailator技术
- 全球各大运营商代码。方便国外卡的朋友修改运营商显示
- #第七章 双波不干涉理论 ​一、双波不干涉理论的分级方法
- 微信公众号文章如何排版?
- 微积分中,区间再现公式的证明
- Acwing - 算法基础课 - 笔记(图论 · 三)