Python实战 | 爬取北京海淀区一居室租房信息(转发有福利哦)

640

又是一个周六,

祝大家一天好心情!

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

 

开发环境

环境:MAC + Python3.6

IDE:Pycharm

模块:import requests、from bs4 import BeautifulSoup

 

爬取目标


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

640

 

爬取分析

本次需要爬取300套房源,但是某租房网站的每一页信息只有30套,如下。因此我们需要爬取10个网页的信息,

640

也就是爬取多个页面。通过观察,我们发现第二个网址是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

到此,整个爬虫流程完成,完美的爬出来想要的信息,是不是很简单,赶快后台回复”北京租房“获得所有源代码,然后试一下吧,另外换一个租房网址也同样适用哦。

转发此文到朋友圈并截图到后台,

获得20G

 python入门视频课

往期实战及福利


  1. 关注本公众号,牧原小主 送您

    1. 回复 北京租房 ,获得所有源代码

    2. 2.7G  380份最新数据分析报告

    3.  40G  人工智能算法课

    4.  已关注的小伙伴,直接回复数据分析报告、人工智能算法

  2. 关注后,回复 PM2.5 获得 Python分析北京PM2.5,原来每年的值都在变少...所有源代码

  3. 关注后,回复“python3.7”,获得python 3.7官方最新pdf 文档

  4. 关注后,回复 世界杯, 获得 2018世界杯来了,利用Python预测冠军(附全部代码和数据集)所有源代码

  5. 关注后,回复“豆瓣电影“,获得 Python实战 | 手把手教你爬取豆瓣电影 Top 250(附全部代码及福利哦)所有源代码

  6. 关注后,回复“python可视化”,获得 利用python“三步”实现数据可视化,炫的不要不要的!所有源代码


长按二维码,关注我们

640?wx_fmt=jpeg


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值