基于bs4+requests的蓝房网爬虫

1.代码可以直接运行,请下载anaconda并安装,用spyder方便查看变量 或者可以查看生成的excel文件 2.依赖库,命令行运行(WIN10打开命令行快捷键:windows+x组合键,然后按a键): pip install BeautifulSoup4 pip install requests 3.爬取的网站是蓝房网(厦门),可以进入http://house.lanfw.com/xm/search-y1/进行观察 4.关于如何判断代码是python2还是python3,print('')为python3,print ''为python2 简而言之就是print需要用括号的就是python3,下面代码如是。 5.爬取53个页面并进行解析,程序运行后需要等待大概30秒

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 15 21:35:52 2018

@author: Steven Lei
"""

def getHousesDetails(url):
  from bs4 import BeautifulSoup
  import requests
  request = requests.get(url)
  request.encoding = 'utf-8'
  soup = BeautifulSoup(request.text,'lxml')
  houses = soup.select('.lpList')
  housesDetails = []
  for house in houses:
    #获取楼盘名字
    houseName = house.select('.title h2 a')[0].text
    #获取楼盘地址
    address = house.select('.lpTxt div')[1].select('p')[1].text.strip('楼盘地址: 查看地图')
    if(len(address) >= 16):
        houseDetailHref = house.select('.title h2 a')[0]['href']
        request = requests.get(houseDetailHref)
        request.encoding = 'utf-8'
        soup = BeautifulSoup(request.text,'lxml')
        address = soup.select('.toplpMsg ul li div i')[0].text.strip('楼盘地址:')
    #获取楼盘开盘时间
    openTime = house.select('.lpTxt div')[1].select('p')[3].text.strip('开盘时间:')
    #获取楼盘价格
    price = house.select('.price p b')[0].text
    #获取楼盘销售状态
    def numberToString(number):
      switcher = {
          1: "在售",
          3: "尾盘",
          5: "未售",
          15: "售罄"
      }
      return switcher.get(number,'未知')
    saleStatusImg = house.select('.title p img')[0]['src']
    saleStatusId = int(saleStatusImg.lstrip('/public/images/state_').rstrip('.jpg'))
    saleStatus = numberToString(saleStatusId)
    #将所有楼盘信息做成楼盘信息字典
    houseDetails = {}
    houseDetails['houseName'] = houseName 
    houseDetails['address'] = address
    houseDetails['openTime'] = openTime
    houseDetails['price'] = price
    houseDetails['saleStatus'] = saleStatus
    housesDetails.append(houseDetails)
  return housesDetails    

def getAllHousesDetails():
  maxPageNumber = 54
  urlBefore = 'http://house.lanfw.com/xm/search-y{}'
  allHousesDetails = []
  for i in range(1,maxPageNumber+1):
    url = urlBefore.format(i)
    allHousesDetails.extend(getHousesDetails(url))
  import pandas
  dataframe = pandas.DataFrame(allHousesDetails)
  return dataframe

if __name__ == '__main__':
  allHousesDetails = getAllHousesDetails()
  allHousesDetails.to_excel('houseDetails2.xlsx')

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蜉蝣禅修之道

ubuntu13.10安装broadcom无线网卡驱动

2517
来自专栏张善友的专栏

Windows Phone应用 博客园阅读器

今儿个平安夜,明天圣诞节,聚餐、飙歌、通宵玩,各种欢乐走起来!给WindowsPhone机友发个小应用。 最近学习实际开发WindowsPhone应用程序,第一...

2127
来自专栏Wordpress专用主机|主题模板|必备插件

5款经典的WORDPRESS问答类主题模板推荐

近期,有不少WP爱好者问我:wordpress可以用来做问答类网站吗?类似于百度知道,知乎之类的。 答案是当然可以!其实wordpress也有不少优秀的问答类主...

1.9K8
来自专栏琯琯博客

Yii2 学习笔记之发送邮件

3744
来自专栏吉浦迅科技

用Jetson TX1和扫地机搭建一个机器人

网络上有人用Jetson TX1和一台iRobert扫地机做了一个机器人! ? 让我们看看他是怎么做到的吧? 第一步:拆解、打孔 ? 在拆掉了顶盖、底盖、行走轮...

3185
来自专栏python学习之旅

Python Django框架笔记(五):模型

1976
来自专栏皮振伟的专栏

[virt][clock]steal time技术分析

前言: 在《clocksource的管理和虚拟化》中,大概分析了kvm clock,tsc,hpet等clock source。其中尤其是kvm clock计算...

3666
来自专栏Jerry的SAP技术分享

CRM数据库表COM_TA_R3_ID的数据来源

这个表存放的内容是CRM产品同名settype COM_TA_R3_ID对应的业务数据。

2967
来自专栏磨磨谈

Ceph用户邮件列表Vol45-Issue3

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=af5e5...

1322
来自专栏FreeBuf

极客DIY:只用两步教你制作一款可编程键盘

对于那些工作时需要与许多组合键打交道的人(比如经常使用Photoshop的人)来说,一款可编程键盘无疑是十分实用的。 本期的DIY将为大家带来一款可编程键盘,其...

2316

扫码关注云+社区

领取腾讯云代金券