完整走一遍从数据爬取下来到完成数据预测的流程,这次先把爬取数据整出来。爬取的内容是深圳龙岗区的二手房数据,一共有3000条。

- 先把要用的包导进来

import re
import xlwt
import requests
import collections
from bs4 import BeautifulSoup

- 解析网站
       由于每个页面的链接都是pg+页数,所以这里再解析网站的时候直接对翻页爬取也做了处理

page = 1
longgang_url = 'https://sz.ke.com/ershoufang/longgangqu/pg'
pre_url = longgang_url+str(page)
html = requests.get(pre_url).text
house = BeautifulSoup(html,'html.parser')

- 确定爬取网页内容
       红色框圈主的为此次要爬取的内容,这部分最难的还是“中楼层 (共30层) 5室2厅 | 165.61平米 | 南”,因为我想把这一整条标签切割成一段一段的格式,方便后期数据预测要使用这个特征。

- 查看所需爬取内容对应的标签并实现爬取

接下来的爬取内容均在for循环里面,此处的循环是针对翻页的循环(一共有100页)。

for page in range(101):
  1. 房子名称对应的标签如下


       爬取内容如下

name=[]
#房名
pre_name = house.find_all('a', class_='VIEWDATA CLICKDATA maidian-detail')
for each in pre_name:name.append(each.text)
  1. 房子位置对应的标签如下


       爬取内容如下,如果不做正则表达式匹配处理的话会遇到下面这种情况,严重影响美观。

       所以这边用正则表达式来匹配我们需要的文字信息,匹配处理完的数据是个列表,所以我们还需要把列表中的数据取出来再插入position的列表里。

position=[]
pre_position = house.find_all('div', class_='positionInfo')
a = re.compile('\n\n(.*?)\n', re.S)
for each in pre_position:position.append(a.findall(each.text)[0])
  1. 房子价格对应的标签如下

    这个标签的内容可以实现直接爬取,不需要做处理
price=[]
pre_price = house.find_all('div', class_='totalPrice')
for each in pre_price:price.append(each.text)
  1. 房子单价对应的标签如下

    单价对应的标签爬下来的内容也是很不美观,处理方式请看正则表达式的内容

    处理代码如下
unitprice=[]
pre_unitprice = house.find_all('div', class_='unitPrice')
a = re.compile('\s([\u4e00-\u9fa5_0-9_\s_\/]*)\n', re.S)
for each in pre_unitprice:unitprice.append((a.findall(each.text))[0])
  1. 房子详细信息对应的标签如下

    这个标签看似简单很好爬,但是当你不做处理直接爬下来之后,你会发现这个更恶心。用pycharm看的话就是各种换行各种空格,这些处理相对来说很简单,但对我来说最难的还是怎么把它切割成一个一个的特征。

    这个是对换行空格匹配处理的代码
pre_details = house.find_all('div', class_='houseInfo')
b = re.compile('([\u4e00-\u9fa5_0-9_\(_\)_\.]*)', re.S)
for i in pre_details:all_details = b.findall(i.text)all_details.append(i.text)print(all_details)

处理完之后的结果如下,真是要人命

疯狂百度之后,找到了解决办法,那就是

pre_details = house.find_all('div', class_='houseInfo')
b = re.compile('([\u4e00-\u9fa5_0-9_\(_\)_\.]*)', re.S)
floor_list = []
for i in pre_details:all_details = b.findall(i.text)floor_list.append(list(collections.OrderedDict.fromkeys(all_details).keys()))print(floor_list)

这下看起来舒服多了

处理完变成列表的数据之后就好办了,把各项数据放入对应的列表里

floor = []
year = []
layout = []
area = []
for i in floor_list:floor.append(i[1] + i[2])year.append(i[3])layout.append(i[4])area.append(i[5])

- 把内容保存到excel表格里

  1. 新建一个workbook并设置表格的标签
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('深圳房价')
col = ('房子名称', '房子价格', '房子单价', '房子位置', '房子楼层', '建房年份', '房子布局', '房子面积')
for j in range(8):worksheet.write(0, j, col[j])
  1. 由于第0行已被标签占领,所以需要i+1
for i in range(len(name)):worksheet.write(i+1,0,name[i])worksheet.write(i+1,1,price[i])worksheet.write(i+1,2,unitprice[i])worksheet.write(i+1,3,position[i])worksheet.write(i+1,4,floor[i])worksheet.write(i+1,5,year[i])worksheet.write(i+1,6,layout[i])worksheet.write(i+1,7,area[i])
workbook.save('深圳房价.xls')

-爬虫内容到此结束

爬取贝壳网深圳二手房实战相关推荐

  1. python 爬取贝壳网小区名称_Python爬虫实战:爬取贝壳网二手房40000条数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于啤酒就辣条 ,作者啤酒就辣条 一.网页分析 爬取贝壳网石家庄二 ...

  2. Python爬虫实战:爬取贝壳网二手房40000条数据

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于啤酒就辣条 ,作者啤酒就辣条 一.网页分析 爬取贝壳网石家庄二 ...

  3. BeautifulSoup爬取贝壳网成都二手房源信息(附:完整源代码)

    BeautifulSoup爬取贝壳网成都二手房源信息 最近想出一套二手房,刚好在学习爬虫,那就顺手爬一下贝壳上成都各区二手房信息了解一下行情,本篇先介绍数据爬取,数据分析稍后有时间再写.仅用于技术交流 ...

  4. python二手房价格预测_Python爬取赶集网北京二手房数据R对爬取的二手房房价做线性回归分析...

    前言:本文主要分为两部分:Python爬取赶集网北京二手房数据&R对爬取的二手房房价做线性回归分析.文章思路清晰,代码详细,特别适合刚刚接触Python&R的同学学习参考. Part1 ...

  5. 利用python爬取贝壳网租房信息

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资 ...

  6. 爬取贝壳网的40000条基本数据

    总共分为四部分: 1.获得网页URL 2.获得网页数据 3.过滤数据,获得需要的数据 4.完整代码 一,获得网页URL #先导入库 import urllib.request,urllib.error ...

  7. Python爬取20778套深圳二手房并数据分析

    白岩松曾说:"高房价正在毁掉无数年轻人的爱情,毁灭了年轻人的想象力."尤其是北上广深这类一线城市,对于一般的工薪阶层,买房更是难上加难.前不久,DT财经写了一篇文章<我只有3 ...

  8. python 爬取贝壳网小区名称_如何使用 python 爬取全国小区名称

    前言 笔者在做一个 NLPNLPNLP 项目时,需要识别小区名,因此想要查询网上是否有相关的数据集.经过一番搜索后一无所获-从而决定自己来爬取这份数据. 由于爬取网站的内容信息之后可能会发生变更,因此 ...

  9. Scrapy爬取贝壳网并存入csv

    一.分析目标站点 本文以爬取宁波地区的房产信息为例 1.宁波整个市页面 宁波地区的网址都是以上面的格式,再加上各个区的拼音,即可进入各个区的网页. 各个区的名称: areas = {'海曙区': 'h ...

  10. Python爬虫实战:爬取贝壳网二手房成交数据,将数据存入Excel。

    import requests import xlrd as xlrd from xlutils.copy import copy from lxml import etree def getData ...

最新文章

  1. IntelliJ IDEA快捷键汇总_java
  2. js动态变量名_scss引入其他scss变量,并通过js动态修改scss变量
  3. 飞线5根连接图_“飞线”和“跳线”有什么区别,你用对了吗?电路故障的排查方法...
  4. 网站优化中能有效提升网站打开速度的技巧有哪些?
  5. pandas 判断数据表中的缺失值
  6. 二分逼近二分查找 高效解析800万大数据之区域分布
  7. 斯坦科维奇洲际篮球冠军杯
  8. boost::spirit模块演示了 AST 的生成,然后将其转储为人类可读的格式
  9. 异步IO\数据库\队列\缓存
  10. 我在河南安阳拍摄的一个山村小孩儿
  11. 什么是U-Boot以及如何下载U-Boot源码
  12. matlab和python哪个运行快_MATLAB比Python快吗?
  13. WaitForSingleObject 和 EnterCriticalSection 效率比较
  14. Objective-C 学习笔记1 HelloWorld
  15. cookie 和session
  16. 真实可行的Python清屏命令
  17. 超好用的录屏软件 captura
  18. 2022蓝牙耳机哪款更值得买?最受欢迎的十大蓝牙耳机排行榜
  19. Android 输出word文件中插入图片
  20. ios 高德挪动地图获取经纬度_iOS 高德地图 根据经纬度解析成位置

热门文章

  1. c语言选择结构程序设计实验总结,C语言程序设计,选择结构程序设计实验
  2. ue4 离线渲染_UE4渲染引擎模块简介(2)
  3. 英语单词词性顺口溜_英语单词词性分类
  4. 回首来时路——李天岩
  5. java 修改文件编码_java中怎么获取、设置文件编码格式?
  6. 让SaaS进入全面定制时代
  7. python刘卫国实验题_刘卫国c 程序设计实践教程答案
  8. JS中this的四种调用方法
  9. 数字图像处理——图像边缘检测
  10. vscode彩色括号