北京房租到底有多高? | 爬取北京海淀区一居室租房信息

640?wx_fmt=jpeg

图片来源:花瓣网


文章来源

人工智能与大数据生活



如需转载,请联系原作者授权


最近北京房租成了热门话题,到底北京的房租有多高?

本次实战是爬取北京海淀区一居室的租房信息,共爬取了300套房源信息,看一下北京的房租到底有多高?效果如下:


开发环境

环境:MAC + Python3.6

IDE:Pycharm

模块:import requests、from bs4 import BeautifulSoup


爬取目标

本次爬取目标是北京海淀区一居室的租房信息,如下图所示。这些信息主要包括标题,租金,小区名字,中介的头像以及姓名。

640?


爬取分析

本次需要爬取300套房源,但是某租房网站的每一页信息只有30套,如下:

640?

因此我们需要爬取10个网页的信息,也就是爬取多个页面。通过观察,我们发现第二个网址是https://bj.lianjia.com/zufang/haidian/pg2l1/,第三个是https://bj.lianjia.com/zufang/haidian/pg3l1/,因此得出网址的规律是pg2l1的页面以此加1。

640?

根据上面的分析,我们只需使用一个for循环就可以得到10个页面的信息,具体代码如下。然后开始解析每一个页面。

640?


爬取一个页面

解析静态网页信息三步即可完成:

第一步:

使用requests库中的get方法解析页面,但是为了防止被反爬虫,建议使用headers进行模拟浏览器。否则你会得到下面的信息:

640?

代码如下:

`python`
    #第一步:使用GET获取页面请求
    #获取页面信息
    headers = {
        'User-Agent''Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36'
    }
    data_url = requests.get(url,headers=headers)

第二步:

进行页面解析,找到需要的信息。本次使用的是BeautifulSoup库。Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序,具体代码如下:

`python`
    #第二步:开始解析页面
    soup =BeautifulSoup(data_url.text,'lxml')

    #print(soup)


第三步:

使用selector进行解析页面,找到租房信息的详细页面。selector 定位需要的信息数据,具体方法是鼠标放在图片上,右键,检查,copy-CSS SELECTOR。浏览器自动copy出来css样式,具体代码如下:

`python`
   '''
        使用selector进行解析页面,找到租房信息的详细页面。
        也就是进行页面的跳转
    '''

    #鼠标放在图片上,右键,检查,copy-CSS SELECTOR
    #一定要去掉:NTH-CHILD(1)否则出差错
    # house-lst > li:nth-child(1) > div.pic-panel > a
    soup_selects = soup.select('#house-lst > li > div.pic-panel > a')

    print(soup_selects)

    for soup_select in soup_selects:
        # selector返回的是一个列表,有很多属性信息,目的是链接,所以选择href
        href_url = soup_select.get("href")
        #第三步,找到详细页面进行解析
        #print("得到详情页面信息")
        #print(href_url)
        get_detail_info(href_url)

爬取目标页面信息

由于详细的房租信息也是一个新的页面,所以需要进行再次的重复上面的三步,具体代码如下:

`python`
    #第一步: 使用URL获取页面
    detail_url = requests.get(url)

    #第二步:使用BS4解析数据
    detail_soup = BeautifulSoup(detail_url.text,'lxml')

    #第三步:使用 selecter 定位需要的信息数据

    #获取名称
    #body > div: nth - child(7) > div.title - wrapper > div > div.title > h1
    titles = detail_soup.select("body > div > div.title-wrapper > div > div.title > h1")
    #print("租房信息的标题是{}".format(titles))

    #获取地址
    addresses = detail_soup.select("body > div > div.overview > div.content.zf-content > div.zf-room > p > a")
    #print("小区名字是{}".format(addresses))

    #获取价格
    #body > div:nth-child(7) > div.overview > div.content.zf-content > div.price > span.total
    prices = detail_soup.select("body > div > div.overview > div.content.zf-content > div.price > span.total")
    #print("租房在海淀区,一居室的价格是{}".format(prices))

    #获取图片
    ##topImg > div.imgContainer > img
    images = detail_soup.select("#topImg > div.imgContainer > img")


    #获取中介头像
   # body > div: nth - child(7) > div.overview > div.content.zf - content > div.brokerInfo > a > img
    avartars = detail_soup.select("body > div > div.overview > div.content.zf-content > div.brokerInfo > a > img")

    #获取中介姓名
    #body > div:nth-child(7) > div.overview > div.content.zf-content > div.brokerInfo > div > div.brokerName > a.name.LOGCLICK
    names = detail_soup.select("body > div > div.overview > div.content.zf-content > div.brokerInfo > div > div.brokerName > a.name.LOGCLICK")

    #获取房东性别
    #sexs = address = detail_soup.select("#floatRightBox > div.js_box.clearfix > div.member_pic > div")

效果如下

640?

到此,整个爬虫流程完成,完美的爬出来想要的信息,然后就可以分析北京的房租了。


扫描下方二维码加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习吧~~

640?wx_fmt=png

成为群成员,或拉人进群,

还有机会获得免费赠书哦~~

640?wx_fmt=jpeg640?wx_fmt=png


投稿啦!!!



精彩继续

CSDN作为国内专业的云计算服务平台,目前提供云计算、大数据、虚拟化、数据中心、OpenStack、CloudStack、机器学习、智能算法等相关云计算观点、技术、平台、实践、云产业咨询等服务。CSDN 公众号也一直坚持「与千万技术人共成长」的理念,深度解读行业内热门技术与场景应用,致力于让所有开发者保持敏锐的技术嗅觉、对行业趋势与技术获得更广阔的认知。

文章题材

  • 首先你需要关注我们的公众号“CSDN云计算”,这样你会更准确了解我们需要的文章风格;

  • 侧重于云计算领域相关的文章,可以是技术、运维、趋势等方面的务实内容;

  • 原创,要求文章有鲜明观点和看法。

投稿须知

  •  稿费:根据原创性、实用性和时效性等方面进行审核,通过的文章会发布在本微信平台。一经采用,我们将支付作者酬劳。酬劳可能不多,这代表的是一个心意,更多是因为爱好,是有识之士抒发胸怀的一种方式;

  • 字数要求:稿件字数以2K-8K为宜,少于2K或多于8K都会一定程度降低阅读愉悦感;

  • 投稿邮箱:lijy@csdn.net。或者添加微信表明来意,微信号:tangguoyemeng。请备注投稿+姓名+公司职位


如果咱们的合作稳定又愉快,还可以签订合同长期合作哦!


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

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

相关文章

oracle adg switch over,Oracle11gr2_ADG管理之switchover补充

之前演示的switchver总是提示下面的错误,并且需要人工干预:DGMGRL> switchover to snewtest;Warning: You are no longer connected to ORACLE.Please complete the following steps to finish switchover:start up instance "newtest" of database "newtest…

租房有深坑?手把手教你如何用R速读评论+科学选房

图片来源:网络编译Hope、臻臻、CoolBoy文章来源大数据文摘出品如有转载,请联系原作者。最近,租房这事儿成了北漂族的一大bug,要想租到称心如意的房子,不仅要眼明手快,还得看清各类“前辈”的评价避开大坑。…

oracle查询删除时间戳,Oracle查询时间戳,建表时间,新建序列,误删数据

Oracle的时间戳格式查询如下:SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER NLS_TIMESTAMP_FORMAT.Oracle查询建表时间:SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAMETABLENAME;新建序列(到时候改一下名字就行了):-- Create sequencecreate sequence SEQ_…

快速搭建Python+Selenium+Sublime 自动化测试环境方法

随着业内越来越多的公司对自动化测试的大力推行,对测试人员能够使用自动化工具的要求也随之增多。为了能让更多的同事在学习selenium的初期,能够顺利的迈出第一步,即可以通过代码操作selenium driver 调用浏览器打开目标网址,笔者…

oracle表空间如何压缩,Oracle里表空间的压缩

对于table空间的收缩是一个老生常谈的问题,不过却是一个一直都没有很透彻的讨论清楚过的问题。借ks_reny的机会,谈谈个人看法,有不及之处,希望高手引领更深入研究此话题。datafile是物理上的一个文件在下层就是基于文件系统的bloc…

刚刚,百度总裁张亚勤说……

作者奋笔疾书的小编原创文章,如有转载,请联系本公众号。9月4日, ABC SUMMIT百度云智峰会在上海举行。百度总裁张亚勤首先发表《云计算的新浪潮》主题演讲,他表示,我们已经全面进入物理世界数字化、AI as a Service、新…

pycharm 提示:this license **** has been cancelled(2)

目录 一.找到hosts文件 二.修改hosts文件 三.检查hosts文件是否修改成功 pycharm安装激活过程中,提示 this license **** has been cancelled 。这个问题并不是你的激活码不对,而是需要修改系统的hosts文件,下面详细讲解下如何修改hosts文…

linux的trace文件路径,linux系统分析工具之Blktrace(十)

Blktrace简介:blktrace是一个针对Linux内核中块设备I/O层的跟踪工具,用来收集磁盘IO信息中当IO进行到块设备层(block层,所以叫blk trace)时的详细信息(如IO请求提交,入队,合并,完成等等一些列的信息)&#…

嘿,运维!你与VXLAN有场约会……

图片来源:网络作者Bert如有转载,请联系本公众号。VXLAN概述 ▍顾名思义,VXLAN(Virtual eXtensible Local Area Network)提供了类似VLAN的二层网络服务,并且比VLAN更具备扩展性和灵活性,该技术将…

如何判断一个点在任意四边形内

通过面积法,判断点P是否在四边形(A,B,C,D)内。如果在四边形内,则四边形的面积面积(P,A,B)面积(P,B,C)面积(P,C,D)面积(P,D,A),反之不在四边形内。 此处我将判断方法定义成了静态方法,方便其他类访问,代码如下: public class IsInQuadrangle {public IsInQuadrangle…

加载不同linux内核,Linux内核加载过程

以32位x86,bzImge为例grub版本为0.971、计算机上电2、0xFFFFFFF0当cpu检测reset引脚上的信号后便将指令指针寄存器的值设置为0xfff0——INTEL 80386 PROGRAMMERS REFERENCE MANUAL 1986, Chapter 10此时为实模式,cpu将执行物理地址0xFFFFFFF0处的指令访址…

网格变形动画MeshTransform

原文:Mesh Transforms 作者:Bartosz Ciechanowski 译者:kmyhy 我是 transform 属性的超级粉丝。让 UIView 或者 CALayer 的形体发生改变的最简单方法就是联合使用旋转、平移和缩放。在易于适用的同时,常规变换所能实现的效果也同…

cloud一分钟 | 腾讯云联手斗鱼、虎牙两大头部游戏直播平台开启 定制道具的创新互动...

Hello,everyone:9月7日早,星期五,祝大家工作愉快!一分钟新闻时间:完01微 信 群 添加小编微信:tangguoyemeng,备注“进群”即可,加入【云计算学习交流群】,和…

Linux服务器硬盘更换,[ Linux ] 服务器更换硬盘

服务器型号:ThinkServer RD650操作系统:Red Hat 6.7业务用途:生产环境监控机接到机房邮件通知,告知某台服务器硬盘告警,并提供了设备SN号和机柜位置。根据提供想相关信息找到对应的设备IP并确定该设备的业务用途。登录…

【BAT面试现场】如何判断一个数是否在40亿个整数中?

作者channingbreeze如需转载,请联系原作者授权。小史是一个应届生,虽然学的是电子专业,但是自己业余时间看了很多互联网与编程方面的书,一心想进BAT。今天他就去BAT中的一家面试了。简单的自我介绍后,面试官给了小史一…

彩色BMP转换成灰度图的原理

图像处理中,大部分的处理方法都需要事先把彩色图转换成灰度图才能进行相关的计算、识别。 彩色图转换灰度图的原理如下: 我们知道彩色位图是由R/G/B三个分量组成,其文件存储格式为 BITMAPFILEHEADERBITMAPINFOHEADER,紧跟后面的可…

Linux java 生效不了,linux jdk 不生效怎么办

【摘要】操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。下面是linux jdk 不生效怎么办,让我…

程序猿 - 超实用的工具、素材、学习网站分享

文章目录------------------------------学习教程篇-------------------------------bilibili哔哩哔哩网易云课堂siki学院:泰课在线:可汗学院:线性代数的本质 - bilibili计算机科学速成课 - bilibiliLearnOpenGL:The Book of Shad…

【大数据学习笔记】新手学习路线图

第1阶段-数据仓库基 1.MysQL关系型数据库 (MySQL介绍、MySQL安装、MySQL基础语法、MySQL高级语法、MySQL系统架构、MySQL存储引擎、MySQL索引、MySQL备份恢复、MySQL主从、主主复制、MySQL存储过程、MySQL分库分表、MySQL综合案例、MySQL性能优化) 2.P…

面趣 | 马云在面试中出的一道题,据说只有一个人答对……

大神,求解!据说,马云给新员工出了一道题然鹅,只有一个人答对了!!!!智商不足的小编居然打开了这道题求解!!!我手里有50元钱花去剩余买衣服 20元30…