基于bs4+requests的蓝房网爬虫

简介: 1.代码可以直接运行,请下载anaconda并安装,用spyder方便查看变量或者可以查看生成的excel文件2.依赖库,命令行运行(WIN10打开命令行快捷键:windows+x组合键,然后按a键):pip install BeautifulSoup4pip install requests3.

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')
目录
相关文章
|
19天前
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
38 7
|
2月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
在网络数据的海洋中,网络爬虫遵循HTTP协议,穿梭于互联网各处,收集宝贵信息。本文将从零开始,使用Python的requests库,深入解析HTTP协议,助你构建自己的网络爬虫帝国。首先介绍HTTP协议基础,包括请求与响应结构;然后详细介绍requests库的安装与使用,演示如何发送GET和POST请求并处理响应;最后概述爬虫构建流程及挑战,帮助你逐步掌握核心技术,畅游数据海洋。
70 3
|
2月前
|
数据采集 API 开发者
🚀告别网络爬虫小白!urllib与requests联手,Python网络请求实战全攻略
在网络的广阔世界里,Python凭借其简洁的语法和强大的库支持,成为开发网络爬虫的首选语言。本文将通过实战案例,带你探索urllib和requests两大神器的魅力。urllib作为Python内置库,虽API稍显繁琐,但有助于理解HTTP请求本质;requests则简化了请求流程,使开发者更专注于业务逻辑。从基本的网页内容抓取到处理Cookies与Session,我们将逐一剖析,助你从爬虫新手成长为高手。
68 1
|
2月前
|
数据采集
爬虫之bs4学习
爬虫之bs4学习
|
2月前
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
3月前
|
数据采集 程序员 测试技术
比 requests 更强大 Python 库,让你的爬虫效率提高一倍!
比 requests 更强大 Python 库,让你的爬虫效率提高一倍!
|
20天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
63 6
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
184 4
|
3月前
|
数据采集 存储 搜索推荐
打造个性化网页爬虫:从零开始的Python教程
【8月更文挑战第31天】在数字信息的海洋中,网页爬虫是一艘能够自动搜集网络数据的神奇船只。本文将引导你启航,用Python语言建造属于你自己的网页爬虫。我们将一起探索如何从无到有,一步步构建一个能够抓取、解析并存储网页数据的基础爬虫。文章不仅分享代码,更带你理解背后的逻辑,让你能在遇到问题时自行找到解决方案。无论你是编程新手还是有一定基础的开发者,这篇文章都会为你打开一扇通往数据世界的新窗。
|
4月前
|
数据采集 存储 JSON
从零到一构建网络爬虫帝国:HTTP协议+Python requests库深度解析
【7月更文挑战第31天】在网络数据的海洋中,使用Python的`requests`库构建网络爬虫就像探索未知的航船。HTTP协议指导爬虫与服务器交流,收集信息。HTTP请求包括请求行、头和体,响应则含状态行、头和体。`requests`简化了发送各种HTTP请求的过程。
84 4