基于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.爬取的网站是安居客(厦门)网站,可以进入https://xm.fang.anjuke.com/loupan/all/进行观察
4.关于如何判断代码是python2还是python3,print('')为python3,print ''为python2

# -*- coding: utf-8 -*-
"""
Created on Sun Jan 14 19:07:39 2018

@author: Steven Lei
"""

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('.item-mod')[3:]
  housesDetails = []
  for house in houses:
    #获取楼盘名字
    houseName = house.select('.items-name')[0].text
    #获取楼盘价格
    priceBefore = house.select('.price')
    if(len(priceBefore) == 0):
        priceBefore = house.select('.price-txt')
    price = priceBefore[0].text
    #获取楼盘地址
    address = house.select('.list-map')[0].text
    if(address[-1] == '.'):
      href = house.select('.pic')[0]['href']
      request = requests.get(href)
      request.encoding = 'utf-8'
      soup = BeautifulSoup(request.text,'lxml')
      address = soup.select('.lpAddr-text')[0].text
    #获取房屋面积
    houseSizeBefore = house.select('.huxing span')
    if(len(houseSizeBefore) >0):
      houseSize = houseSizeBefore[-1].text
    else:
      houseSize = ''
    #获取销售状态
    saleStatus = house.select('.tag-panel i')[0].text
    #获取户型
    if(len(house.select('.tag-panel i')) == 2):
      houseType = house.select('.tag-panel i')[1].text
    else:
      houseType = house.select('.tag-panel span')[0].text
    #将获取的信息做成房屋信息字典
    houseDetail = {}
    houseDetail['houseName'] = houseName
    houseDetail['price'] = price
    houseDetail['address'] = address
    houseDetail['houseSize'] = houseSize
    houseDetail['saleStatus'] = saleStatus
    houseDetail['houseType'] = houseType
    print(houseDetail)
    housesDetails.append(houseDetail)
  return housesDetails

def getAllHouseDetails():
  import pandas
  urlBefore = 'https://xm.fang.anjuke.com/loupan/all/p{}/'
  allHouseDetails = []
  for i in range(1,8):
    url = urlBefore.format(i)
    allHouseDetails.extend(getHousesDetails(url))
  dataframe = pandas.DataFrame(allHouseDetails)
  return dataframe

if __name__ == '__main__':
  #houseDetails = getHousesDetails('https://xm.fang.anjuke.com/loupan/all/p1/')
  allHouseDetails = getAllHouseDetails()
  allHouseDetails.to_excel('anjukeHousesDetails.xlsx')
  print(allHouseDetails.head(10))
目录
相关文章
|
2月前
|
机器学习/深度学习 数据采集 JSON
Python爬虫requests库详解#3
摘要:python requests库基用法,高级用法【2月更文挑战第10天】
59 0
Python爬虫requests库详解#3
|
4月前
|
数据采集
requests爬虫
requests爬虫
30 1
|
1天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
6 0
|
2月前
|
数据采集 JSON 关系型数据库
requests库常用函数使用——爬虫基础(1)
requests库常用函数使用——爬虫基础(1)
49 0
|
5月前
|
数据采集 JavaScript 前端开发
Web爬虫开发指南:使用Python的BeautifulSoup和Requests库
Web爬虫是一种从互联网上获取数据的自动化工具,它可以用于抓取网页内容、提取信息和分析数据。Python提供了一些强大的库,其中BeautifulSoup和Requests是两个常用的工具,用于解析HTML内容和发起HTTP请求。本文将介绍如何使用BeautifulSoup和Requests库构建一个简单而有效的Web爬虫。
|
8月前
|
数据采集 JSON 安全
|
10月前
|
数据采集 Web App开发 API
python爬虫库之Requests
python爬虫库之Requests
|
11天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
15天前
|
数据采集 Python
【python】爬虫-西安医学院-校长信箱
本文以西安医学院-校长信箱为基础来展示爬虫案例。来介绍python爬虫。
【python】爬虫-西安医学院-校长信箱
|
1月前
|
数据采集 Python
爬虫实战-Python爬取百度当天热搜内容
爬虫实战-Python爬取百度当天热搜内容
66 0