python爬取上海链家网二手房数据

1、数据爬取说明

1.1 爬取目的

一个朋友在学习自考,作业是爬取数据进行数据分析,正好最近我在学习python,所以他委托我帮他完成这一工作

1.2使用模块

requests进行网络请求、bs4进行数据解析、xlwt进行excel表格存储

2、网页结构分析

2.1 首页分析,获取数据

网页链接:http://sh.lianjia.com/ershoufang/pudongxinqu  红色文字对应的是区名

# 指定爬虫所需的上海各个区域名称
citys = ['pudongxinqu','minhang','baoshan','xuhui','putuo','yangpu','changning','songjiang','jiading','huangpu','jinan','zhabei','hongkou','qingpu','fengxian','jinshan','chongming','shanghaizhoubian']

def getHtml(city):url = 'http://sh.lianjia.com/ershoufang/%s/' % cityheaders = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}request = requests.get(url=url,headers=headers)# 获取源码内容比request.text好,对编码方式优化好respons = request.content# 使用bs4模块,对响应的链接源代码进行html解析,后面是python内嵌的解释器,也可以安装使用lxml解析器soup = BeautifulSoup(respons,'html.parser')# 获取类名为c-pagination的div标签,是一个列表page = soup.select('div .c-pagination')[0]# 如果标签a标签数大于1,说明多页,取出最后的一个页码,也就是总页数if len(page.select('a')) > 1:alist = int(page.select('a')[-2].text)else:#否则直接取出总页数alist = int(page.select('span')[0].text)saveData(city,url,alist+1)

2.2 获取每个区的总页数


2.3 选中一页查看页面链接规律

具体链接地址:http://sh.lianjia.com/ershoufang/pudongxinqu/d2

请求页面具体数据,数据结构


3.总代码

我用的是python2.7进行爬取的,不确定在python3之后的运行有没有问题,建议python2版本进行尝试

#_*_coding:utf-8_*_# 导入开发模块
import requests
# 用于解析html数据的框架
from bs4 import BeautifulSoup
# 用于操作excel的框架
import xlwt# 创建一个工作
book = xlwt.Workbook()
# 向表格中增加一个sheet表,sheet1为表格名称 允许单元格覆盖
sheet = book.add_sheet('sheet1', cell_overwrite_ok=True)# 指定爬虫所需的上海各个区域名称
citys = ['pudongxinqu','minhang','baoshan','xuhui','putuo','yangpu','changning','songjiang','jiading','huangpu','jinan','zhabei','hongkou','qingpu','fengxian','jinshan','chongming','shanghaizhoubian']def getHtml(city):url = 'http://sh.lianjia.com/ershoufang/%s/' % cityheaders = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}request = requests.get(url=url,headers=headers)# 获取源码内容比request.text好,对编码方式优化好respons = request.content# 使用bs4模块,对响应的链接源代码进行html解析,后面是python内嵌的解释器,也可以安装使用lxml解析器soup = BeautifulSoup(respons,'html.parser')# 获取类名为c-pagination的div标签,是一个列表page = soup.select('div .c-pagination')[0]# 如果标签a标签数大于1,说明多页,取出最后的一个页码,也就是总页数if len(page.select('a')) > 1:alist = int(page.select('a')[-2].text)else:#否则直接取出总页数alist = int(page.select('span')[0].text)# 调用方法解析每页数据saveData(city,url,alist+1)# for i in range(1,alist + 1):#     urlStr = '%sd%s' % (url,i)# 调用方法解析每页数据,并且保存到表格中
def saveData(city,url,page):headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}for i in range(1,page):html = requests.get(url='%sd%s' % (url,i),headers=headers).contentsoup = BeautifulSoup(html,'html.parser')infos = soup.select('.js_fang_list')[0].select('li')for info in infos:# print '*'*50des = info.find('a',class_="text link-hover-green js_triggerGray js_fanglist_title").textdd = info.find('div',class_='info-table')nameInfo = dd.find('a',class_='laisuzhou')name = nameInfo.text # 每套二手房的小区名称fangL = dd.find('span').contents[-1].strip().split('|')room_type = fangL[0].strip() # 每套二手房的户型size = fangL[1].strip() # 每套二手房的面积if len(fangL[2].split('/')) == 2:region = fangL[2].split('/')[0].strip() # 每套二手房所属的区域loucheng = fangL[2].split('/')[1].strip() # 每套二手房所在的楼层else:region = ''  # 每套二手房所属的区域loucheng = fangL[2].strip() # 每套二手房所在的楼层if len(fangL) != 4:chaoxiang = '*'else:chaoxiang = fangL[3].strip() # 每套二手房的朝向timeStr = info.find('span',class_='info-col row2-text').contents[-1].strip().lstrip('|')builtdate = timeStr # 每套二手房的建筑时间# 每套二手房的总价price = info.find('span',class_='total-price strong-num').text.strip()+u'万'# 每套二手房的平方米售价jun = info.find('span',class_='info-col price-item minor').textprice_union = jun.strip()# 一定要声明使用全局的row变量,否则会报错,说定义前使用了该变量global row# 把数据写入表中,row:行数 第二个参数:第几列 第三个参数:写入的内容sheet.write(row,0,des)sheet.write(row,1,name)sheet.write(row,2,room_type)sheet.write(row,3,size)sheet.write(row,4,region)sheet.write(row,5,loucheng)sheet.write(row,6,chaoxiang)sheet.write(row,7,price)sheet.write(row,8,price_union)sheet.write(row,9,builtdate)# 每次写完一行,把行索引进行加一row += 1# with open('%s.csv' % city,'ab') as fd:#     allStr = ','.join([name,room_type,size,region,loucheng,chaoxiang,price,price_union,builtdate])+'\n'#     fd.write(allStr.encode('utf-8'))# 判断当前运行的脚本是否是该脚本,如果是则执行
# 如果有文件xxx继承该文件或导入该文件,那么运行xxx脚本的时候,这段代码将不会执行
if __name__ == '__main__':# getHtml('jinshan')row=0for i in citys:getHtml(i)# 最后执行完了保存表格,参数为要保存的路径和文件名,如果不写路径则默然当前路径book.save('lianjia-shanghai.xls')

4.说明

由于作者不善于写博客,写的有点乱,望大家谅解,读者有什么不懂的可以留言问我,也可以像我提出意见和建议,在以后的博客写作中更加注意,谢谢你们的谅解,愿和大家共同学习


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27311.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

购房选址分析之上海市

一日不见,如隔三秋。快过年了,凌晨GIS给大家拜个早年,提前祝大家新年快乐,牛气冲天! 上期我们用矢量分析中的缓冲区分析和叠加分析的方法对长沙市的购房选址方面的问题进行了探讨,得到了许多小伙伴的回应&a…

链家全国房价数据分析 : 数据分析及可视化

相关文章:链家全国房价数据分析 : 数据获取 上一回我们提到了用爬虫爬取链家的新楼盘和二手房数据信息,这回我们来看看如何对他们进行分析。 新楼盘数据分析 因为我们爬的时候是一个个城市爬的,现在我们要把他们合在一起&#x…

大数据统计租房市场现状(上海篇)

对某方面有统计需求的同学可以留言哟~O(∩_∩)O~!!! 数据下载时间:20170620 房间均价:为了对比1房,2房,3房哪个比较划算引入的概念。一条出租信息中,平均每个房间的价格&#xff0c…

链家全国房价数据分析 : 数据获取

最近一直在看论文,也有很久没有coding了,感觉对爬虫的技术有些生疏,我觉得即使现在手头没有在做这方面的东西,经常爬点对技术保鲜还是很重要的。所以这次我打算爬链家的房价数据,目的主要是对爬虫和Python的东西作一个…

上海二手房网站

文章目录 简介git总体架构开发目录 简介 业务目标:实现上海二手房全量数据动态更新、统计、汇总展示,了解二手房变化趋势。 技术目标:前端到后端技术的demo。前身:租房网站。毕业2年需求变更:租房->买房… git 前…

上海的二手房价有所下跌,现在你们的工资够买间厕所了吗?Python帮你分析上海的二手房价

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。 作者:林小呆 仪表板展示 项目背景 去面试的时候被问上海二手房的一些情况,作为一个土著,我只知道上海这个区…

上海二手房价数据分析

目的:本篇给大家介绍一个数据分析的初级项目,目的是通过项目了解如何使用Python进行简单的数据分析。 数据源:博主通过爬虫采集的安X客上海二手房数据,由于能力问题,只获取了2160条数据。 数据初探 首先导入要使用的科学计算包numpy,pandas,可视化matplotlib,seaborn im…

NBA球员投篮数据可视化

最近看了公众号「Crossin的编程教室」的一篇文章。 是有关于NBA球员出手数据的可视化案例,原文链接如下。 个人感觉比较有趣,所以想着自己也来实现一波。 总体上来说差不多,可能就是美观点吧... / 01 / 篮球场 从网上找的篮球场尺寸图&#x…

利用Python进行NBA比赛数据分析

利用Python进行NBA比赛数据分析 一、实验介绍 1.1 内容简介 不知道你是否朋友圈被刷屏过nba的某场比赛进度或者结果?或者你就是一个nba狂热粉,比赛中的每个进球,抢断或是逆转压哨球都能让你热血沸腾。除去观赏精彩的比赛过程,我们…

2021年常规赛NBA球员数据分析

项目介绍: 1、数据来源: 1)数据来源腾讯体育NBA数据,爬虫解析三个JS网页解析获得数据,共有150个球员和22个指标,整理后数据最终如下图格式 2)球队队徽来自网络 3)球队地理位置的经…

kaggle:NBA球员投篮数据分析与可视化(一)

作为数据科学领域的金字招牌,kaggle已成为世界上最受欢迎的数据科学竞赛平台。在kaggle上,每个竞赛题下都藏匿着大批来自世界各地并且身怀绝技的数据科学家。作为一种众包模式,kaggle通过收取部分佣金将企业的数据挖掘问题发布在平台上并设立…

实例:【基于机器学习的NBA球员信息数据分析与可视化】

文章目录 一、项目任务二、代码实现及分析1. 导入模块2. 导入文件并对文件信息进行整体探测3. 数据预处理3.1 查看数据集信息3.2 数据清洗与转换3.3 数据去重 4. 数据可视化4.1 数据相关性4.2 球员数据分析 5. 基于逻辑回归的球员分类5.1 数据重定义5.2 划分数据集与验证集5.3 …

利用Python预测NBA比赛结果

关注「实验楼」,每天分享一个项目教程 NBA总决赛正在火热上演,而有数据的地方就有预测,本教程就教你使用Python预测NBA比赛的结果。 正文共:3240 字 预计阅读时间:8 分钟‍ 一、实验介绍 1.1 内容简介 不知道你是否…

PayPal,Stripe,Square轮询支付系统

轮询展示 展示我们轮询的页面 轮询套餐 根据不同的用户和需求,可以选择不同的套餐 普通版 1500元 1年 1个用户 支持Paypal/Stripe 不限制A站个数 不限制B站个数 不限制提交模式 订单管理 物流管理 风控管理 必要的网站数据处理 24小时远程协助 开始…

使用chatgpt过掉邮生活滑块记录 ob+wasm print参数

****## 邮生活滑块记录 地址 :‘aHR0cHM6Ly95b3VzaGVuZ2h1by4xMTE4NS5jbi93eC8jL2xheGluUmVnaXN0P3VzZXJJZD0yMTA1NTQ2MTYxOSZhY3Rpdml0eUlkPTI4MiZydWxlSWQ9Mjg’ 如图 如上图 大概就这点参数 基本都是前面请求拿的 除了print enmiid 。。。。。。 结果&#xff1…

连续支付(周期扣款)功能开发及注意事项

最近有一个版本需求,需要接入周期扣款做连续会员的功能,没想到这一做就是小半个月,趟了很多坑,所以觉得有必要记录一下 1.周期扣款总体设计 在支付宝和微信中(非苹果支付),周期扣款的流程主要有…

证监会计算机类笔试上岸经验,公务员考试笔试166分上岸经验(全干货)

原标题:公务员考试笔试166分上岸经验(全干货) 一、考前自审 1、具备公务员考试需要的相关知识结构与基本素质(70%)。包括政治素质(理解和掌握国家大政方针与政策),基本科学素质,常识,阅读理解能力,语言功底&#xff0c…

行政职业能力测试软件,公务员行政职业能力测试考试宝典

公务员行政职业能力考试宝典是一款通用的考试练习软件,丰富的题库,包含历年真题和模拟试题,有时间就可以开启刷题模式,对于错误的题目可以进行错题重做、解题思路介绍、统计分析等,达到熟练的程度,大大提高…

一政网是真实助公考上岸的吗?

在当下的经济时代,需要不断的学习,不断的提升自我。报考公务员考试成为了不二选择。报考公务员考试成为了毕业生、在职员工、宝妈等等众多不同类型人的最佳选择。但是公务员考试的难度大,想要公考一次上岸,那么就必需选择报班学习…

2021四川紧急选调/国考备考策略----申论/行测(2020.8.22号开始)

文章目录 1 申论1.1 申论题型1.2 申论备考策略1.3 申论做题顺序及复习阶段 2 行测备考2.1 行测题型2.2 行测备考策略 3 参考资料 1 申论 1.1 申论题型 申论部分一共有五大题型(归纳概括、提出措施、综合分析、公文写作、大作文) 1.2 申论备考策略 这五个题型在国考中是一样…