基于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://xm.esf.lanfw.com/sell_zhuzhai/p1?keyword=/进行观察
4.关于如何判断代码是python2还是python3,print('')为python3,print ''为python2
简而言之就是print需要用括号的就是python3,下面代码如是。
5.爬取538个页面并进行解析,程序运行后需要等待大概500秒

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 15 23:30:28 2018

@author: Administrator
"""

def getHousesDetails(url):
  import requests
  from bs4 import BeautifulSoup
  request = requests.get(url)
  request.encoding = 'utf-8'
  soup = BeautifulSoup(request.text,'lxml')
  houses = soup.select('.houseTxt')
  housesDetails = []
  for house in houses:
    title = house.select('.txtLeft h2 a')[0].text
    communityNameAndAddress = house.select('.txtLeft p')[0].text.strip('查看地图').split()
    communityName = communityNameAndAddress[0]
    if(len(communityNameAndAddress) == 2 ):
      address = communityNameAndAddress[1]
    else:
      address =''
    details = house.select('.txtLeft p')[1].text.split(' | ')
    print(details)
    houseSizeType = details[0]
    houseFloor = details[1]
    houseDecoration = details[2]
    houseBuiltTime = details[3]
    if len(details) == 6 :
      houseOrientation = details[4]
      houseUnitPrice = details[5]
    elif len(details) == 5 :
      houseOrientation = ''
      houseUnitPrice = details[4]
    elif len(details) == 4 :
      houseDecoration = ''
      houseOrientation = ''
      houseBuiltTime = details[2]
      houseUnitPrice = details[3]
    price = house.select('.housePrice')[0].text
    squaremeter = house.select('.squaremeter')[0].text
    keywords = house.select('.houseTab')[0].text
    #上面是获取房子的信息,下面将其做成字典
    houseDetails = {
        'title' : title,
        'communityName' : communityName,
        'address' : address,
        'houseSizeType': houseSizeType,
        'houseFloor' : houseFloor,
        'houseDecoration' : houseDecoration,
        'houseBuiltTime' : houseBuiltTime,
        'houseOrientation' : houseOrientation,
        'houseUnitPrice' : houseUnitPrice,
        'price' : price,
        'squaremeter' : squaremeter,
        'keywords' : keywords
        }
    housesDetails.append(houseDetails)
  return housesDetails

def getAllHousesDetails():
  maxPageNumber = 538
  urlBefore = 'http://xm.esf.lanfw.com/sell_zhuzhai/p{}?keyword='
  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('lanfwSecondHandHouseDetails2.xlsx')
目录
相关文章
|
5月前
|
数据采集 Python
如何通过requests和time模块限制爬虫请求速率?
如何通过requests和time模块限制爬虫请求速率?
|
6月前
|
数据采集 存储 Web App开发
自动化爬虫:requests定时爬取前程无忧最新职位
自动化爬虫:requests定时爬取前程无忧最新职位
|
5月前
|
数据采集 Python
解决requests爬虫IP连接初始问题的方案。
通过上述技艺,爬虫程序的调试和优化将变得十分高效,最妙的是,这些技术诀窍不仅可以帮你避开网络世界里的雷区,更能让你在数据抓取的战场上游刃有余。
94 0
|
数据采集 JSON 测试技术
Python爬虫神器requests库的使用
在现代编程中,网络请求是必不可少的部分。本文详细介绍 Python 的 requests 库,一个功能强大且易用的 HTTP 请求库。内容涵盖安装、基本功能(如发送 GET 和 POST 请求、设置请求头、处理响应)、高级功能(如会话管理和文件上传)以及实际应用场景。通过本文,你将全面掌握 requests 库的使用方法。🚀🌟
1773 7
|
数据采集 Python
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
Flask获取post,get参数,以及 爬虫 requests的get,post参数详解
|
数据采集
爬虫之bs4学习
爬虫之bs4学习
|
7月前
|
数据采集 测试技术 C++
无headers爬虫 vs 带headers爬虫:Python性能对比
无headers爬虫 vs 带headers爬虫:Python性能对比
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
522 6
|
7月前
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
1076 31
|
6月前
|
数据采集 存储 NoSQL
分布式爬虫去重:Python + Redis实现高效URL去重
分布式爬虫去重:Python + Redis实现高效URL去重
下一篇
oss云网关配置