从链家网上爬取租房数据并进行数据分析
数据爬取(scrapy)
# 创建工程
scrapy startproject lianjia
cd lianjia
scrapy genspider gethouse www.xxx.com
items.py
import scrapyclass LianjiaItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()name = scrapy.Field()community = scrapy.Field()area = scrapy.Field()house_type = scrapy.Field()acreage = scrapy.Field()price = scrapy.Field()
gethouse.py
import scrapy
from ..items import LianjiaItem
import re
page = 100
areas = ['dongcheng', 'xicheng', 'haidian', 'chaoyang']class GethouseSpider(scrapy.Spider):name = 'gethouse'# allowed_domains = ['www.xxx.com']start_urls = []for area in areas:for i in range(1, page+1):start_urls.append('https://bj.lianjia.com/zufang/{}/pg{}/'.format(area, i))def parse(self, response):item = LianjiaItem()div_list = response.xpath('//div[@class="content__list"]/div')for div in div_list:item['name'] = div.xpath('.//a[@class="content__list--item--aside"]/@title').extract()[0].split(' ')[0]item['house_type'] = div.xpath('.//a[@class="content__list--item--aside"]/@title').extract()[0].split(' ')[1]item['price'] = div.xpath('.//span[@class="content__list--item-price"]//text()').extract()[0]item['area'] = div.xpath('.//p[@class="content__list--item--des"]/a[1]/text()').extract()[0]temp = div.xpath('.//p[@class="content__list--item--des"]//text()').extract()item['acreage'] = re.findall('/\n (.*?)㎡', ''.join(temp), re.S)[0]print('完成一页')yield item
settings.py
LOG_LEVEL = 'ERROR'
USER_AGENT = ''
ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 1 #每页下载完停一秒防止被封
开爬
scrapy crawl gethouse -o beijinghouse.csv -t csv
数据(里面有一列忘了爬了):
数据分析
import numpy as np
import pandas as pd## 数据预处理:去重以及去除空值
data = pd.read_csv('./beijinghouse.csv')
data = data.drop_duplicates()
data.duplicated()
data = data.dropna(axis=1) #dropna默认情况下是一行中有nan就把这行全删了,所以我们先把那列community删掉
data = data.dropna()## 统一数据格式
housetype = data['house_type']
temp = []
for i in housetype:each = i.replace('房间', '室')temp.append(each)
data.loc[:, 'house_type'] = temp## 研究各城区的房源数量
new_data = pd.DataFrame({'area': data['area'].unique(), 'num': [0]*4})
each_num = data.groupby(by='area').count()
new_data['num'] = each_num.values
new_data.sort_values(by='num', ascending=False)## 研究哪种户型数量较多
def housenum(arr):result = {}for i in arr:if result.get(i) is None: # 推荐用get对字典进行取值,取不到不会报错result[i] = 1result[i] += 1return resultarr = data['house_type']
## 字典推导式 dict()函数可以将列表转换成字典 dictionary.items()可以将字典转换为可迭代的列表
house_info = dict((key, value) for key, value in housenum(arr).items() if value > 50)
## dictionary.keys()和.values()都会生成列表
show_houses = pd.DataFrame({'house_type': [x for x in house_info.keys()], 'num': [x for x in house_info.values()]})## 画图显示各户型的房屋数量(条形图)
import matplotlib.pyplot as plt# 设置显示中文字体
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ['SimHei']
# 避免由于字体更改导致部分字符无法正常显示
mpl.rcParams['axes.unicode_minus'] = Falsehouse_type = show_houses['house_type']
num = show_houses['num']
plt.barh(range(5), num, height=0.7, color='blue', alpha=0.8)
plt.yticks(range(5), house_type)
plt.xlim(0, 500)
plt.xlabel('数量')
plt.ylabel('户型种类')
plt.title('北京各户型房屋数量')
## enumerate()的作用是将一个可迭代的对象封装成一个个元组
for x, y in enumerate(num):## plt.text()表示无指向注释,这里注释的是每个小条的长度,即这类户型的数量plt.text(y + 0.2, x - 0.1, '%s' % y)
plt.show()
从链家网上爬取租房数据并进行数据分析相关推荐
- 08 网上爬取的数据如何制作成表
网上爬取的数据如何制作成表 一.背景 二.操作办法 三.总代码 一.背景 从网上搞到一份数据,如图所示: 我该怎么制作成excel表呢?最后结果为: 二.操作办法 1.由于最后要生成表格,这里使用cs ...
- 利用pandas对在链家网爬取的租房数据进行清洗
爬虫代码可以参考这篇文章,全是干货,在此不再赘述. 爬下来的数据就可以进行数据清洗啦!首先确定需要处理的字段.因为后续准备做回归,所以我的变量设置是这样的: 清洗前的数据如下所示: 结合模型的变量.数 ...
- Python爬取链家网24685个租房信息并进行数据分析
2020年注定是一个不平凡的年份,很多行业受疫情影响艰难前行,即便复产复工提速,被抑制的需求也难以短期释放.与此同时,地摊经济孕育而生,如果人们真的都去摆地摊了,是不是也会出现睡地摊的普遍现象?这时候 ...
- python爬虫案例-Python爬取租房数据实例,据说可以入门爬虫的小案例!
一.什么叫爬虫 爬虫,又名"网络爬虫",就是能够自动访问互联网并将网站内容下载下来的程序.它也是搜索引擎的基础,像百度和GOOGLE都是凭借强大的网络爬虫,来检索海量的互联网信息的 ...
- Python爬取租房数据实例,据说可以入门爬虫的小案例!
一.什么叫爬虫 爬虫,又名"网络爬虫",就是能够自动访问互联网并将网站内容下载下来的程序.它也是搜索引擎的基础,像百度和GOOGLE都是凭借强大的网络爬虫,来检索海量的互联网信息的 ...
- 一小时入门Python爬虫,连我都会了!Python爬取租房数据实例
一.什么叫爬虫 爬虫,又名"网络爬虫",就是能够自动访问互联网并将网站内容下载下来的程序.它也是搜索引擎的基础,像百度和GOOGLE都是凭借强大的网络爬虫,来检索海量的互联网信息的 ...
- 链家java_java爬取链家网数据
int num = 1; String path = "D:\\房源信息.txt"; BufferedWriter bf = new BufferedWriter(new File ...
- 网上爬取股票数据实例
# -*- coding:utf-8 -*- import requests from bs4 import BeautifulSoup import time import random im ...
- Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)
Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...
- Python爬虫爬取链家网上的房源信息练习
一 原链接:用Python爬虫爬取链家网上的房源信息_shayebuhui_a的博客-CSDN博客_python爬取链家 打开链家网页:https://sh.lianjia.com/zufang/ ...
最新文章
- 使用Linux lvm
- Base64编码原理与应用
- 为 Nginx 创建 windows 服务自启动
- 文件、文件夹操作(I)
- hexo version control
- 深度学习(二十一)基于FCN的图像语义分割-CVPR 2015
- SAS 入门(二)实战篇
- Windows中删除文件时提示没有权限怎么办?
- Ubuntu18.04自带火狐浏览器设置语言为中文
- 小白学JAVA之十——枚举
- windows下Intel核显应用ffmpeg的qsv插件编解码
- NPN求解三极管电路或电容恒流放电详解,三极管工作在放大区,基极控制集电极电流,针对电荷泵电容恒流放电控制,因为电荷泵输出恒定电流给快充手机锂电池充电
- 计算机为动态分区无法安装系统,装系统时提示目标分区是动态磁盘的gpt分区,需要在pe环境下进行备份或还原怎么解决...
- chrome中下载文档时设置成不使用idm下载器的方法
- Java 判空工具方法大全
- 挂起模块 hungapp
- 使用charles 抓不到chrome浏览器的包 -- 以及win 10系统关闭charles上不了网问题的解决办法
- 易飞ERP单据自动审核程序
- 怎么用cad版本转换器?转换cad版本的方法
- Sec-Fetch-*请求头
热门文章
- python画平行四边形_利用transform skewX制作平行四边形导航菜单
- python快乐数字怎么表达_幸福快乐用数字怎么表示?
- removeclass 传入两个类_jQuery removeClass() 方法
- 命令行看不见光标怎么办
- 林大计算机科学考研分数线,2018年北京林业大学考研复试分数线已公布
- 关于VScode中如何修改默认的中文注释格式(包括去除斜体和修改颜色)
- 快速拥有自己的博客,语雀或许是不错的选择
- 天下武功,唯快不破——快速搜索工具 ripgrep
- Zookeeper轻松上手
- 自动化脚本开发,真香.....