用Python网络爬虫来教你进行二手房价格及信息爬取(文末送书)

本文主要是介绍用Python网络爬虫来教你进行二手房价格及信息爬取(文末送书),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

举世皆浊我独清,众人皆醉我独醒。

有一天,哥们群里聊到买房问题,因为都上班没几年,荷包还不够重。

然后我就想可以参考某家数据研究研究,房价什么情况了。

爬取准备

某家网站里有新房、二手房、租房等待。如果买房,尤其是在北京的首套,可能二手房是选择之一,那我就针对二手房研究一下。

虽然网上有很多数据源或者教程,但我还是打算重新抓一遍,一是保持数据是最新的,而是练手不犯懒。

需要技能:BeautifulSoup解析数据--正则表达式提取数据--csv存储数据

爬虫思路:常规网站爬虫思路

上图是某家二手房展示页面其中一套房的信息,我需要提取它的:位置、几室几厅、平米数、朝向、装修风格、层数、建造年份、建筑形式、售价。

然后通过HTML分析,找到他们对应的字段(这块爬虫教学里很多,不赘述)

from bs4 import BeautifulSoup
import re
import csv
import requests
import pandas as pd
from random import choice
import time

因为链家二手房一共100页,所以很明确的新建一个csv文档,把它名字取好,把列设置好。

columns = ['小区', '地区', '厅','平米数','方向','状态','层','build-year','形式','钱','单位','网址','推荐语']
# 如果文件由第一行,就不用了
with open('链家二手房100页.csv', 'w', newline='', encoding='utf-8') as file:writer = csv.writer(file, delimiter=',')writer.writerow(columns)file.close()

数据爬取

1. 100页那就写一个循环进行取数

2. 用BeautifulSoup进行页面数据解析

3. 通过正则表达式提取对应字段位置

4. 把提取的信息写入刚刚说的csv文件

5. 为了方便知道进度,在每页结尾加上打印,知道进度

6. 为了防止"给链家服务器带来压力“选择每页隔几秒再切换下页

7. 所有爬完了,打印一个fin~(这是我个人习惯)

i=1
for j in range(100):urll = base_url1+ str(i) +base_url2print(urll)i += 1get_page=requests.get(urll)bs_page = BeautifulSoup(get_page.text, 'html.parser')list_house = bs_page.findAll('div', class_='info clear')for house_one in list_house:house_info    = house_one.find_all('div', class_='houseInfo')position_info = house_one.find_all('div', class_='positionInfo')totalPrice    = house_one.find_all('div', class_='totalPrice')href          = house_one.find_all('div', class_='title')# 正则提取# 小区名,位置position_str  =re.findall('_blank">(.+)</a.+_blank">(.+)?</a', str(position_info))position_str1 =list(position_str[0])# print(type(position_str1),position_str1)# 房子信息house_info_str=re.findall('span>(.+)?</div>', str(house_info))house_info_str = str(house_info_str)[2:-2].split('|')# print(type(house_info_str), house_info_str)totalPrice_str=re.findall('<span>(.+)</span>(.+)</div>', str(totalPrice))totalPrice_str = list(totalPrice_str[0])# print(type(totalPrice_str), totalPrice_str)href_str      =re.findall('http.+html', str(href))# print(type(href_str), href_str)AD_str = re.findall('_blank">(.+)?</a>', str(href))# print(type(AD_str), AD_str)house_all = position_str1 + house_info_str + totalPrice_str + href_str + AD_strprint(house_all)# writer.writerow()with open('链家新房100个.csv', 'a', newline='', encoding='utf-8') as file:writer = csv.writer(file, delimiter=',')writer.writerow(house_all)file.close()print(f'---第{i}页---')times = choice([3, 4, 5, 6])print(f'sleep{times}\n')time.sleep(times)
print('fin')

数据概况

当上边数据跑完了后,可以看到一个表格,打开后数据情况如下:

可以看到,小区名、地点、房型、平米数、方向、层数、建造年代、楼房形式、售价、对应详情页网址就都有啦~

希望对您带来帮助。

文末有送书活动1:在公众号后台回复“自动化”三个字,将有机会参与到《Python自动化测试实战》书籍的送书活动中来,很多小伙伴转自动化了,这个书应该是比较有帮助的,看大家的手气啦,闲时摸摸鱼吧~

文末有送书活动2:在公众号后台回复“深度学习”四个字,将有机会参与到《TensorFlow深度学习实战大全》书籍的送书活动中来,看大家的手气啦,闲时摸摸鱼吧~

文末有送书活动3:在公众号后台回复“线性代数”四个字,将有机会参与到《机器学习线性代数基础》书籍的送书活动中来,看大家的手气啦,闲时摸摸鱼吧~

记得,一共3条肥鱼噢~~

------------------- End -------------------

往期精彩文章推荐:

  • Python环境搭建—安利Python小白的Python和Pycharm安装详细教程

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

你所在城市的房价目前大概多少一平呢?

这篇关于用Python网络爬虫来教你进行二手房价格及信息爬取(文末送书)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/298255

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

【北交大信息所AI-Max2】使用方法

BJTU信息所集群AI_MAX2使用方法 使用的前提是预约到相应的算力卡,拥有登录权限的账号密码,一般为导师组共用一个。 有浏览器、ssh工具就可以。 1.新建集群Terminal 浏览器登陆10.126.62.75 (如果是1集群把75改成66) 交互式开发 执行器选Terminal 密码随便设一个(需记住) 工作空间:私有数据、全部文件 加速器选GeForce_RTX_2080_Ti

poj 3181 网络流,建图。

题意: 农夫约翰为他的牛准备了F种食物和D种饮料。 每头牛都有各自喜欢的食物和饮料,而每种食物和饮料都只能分配给一头牛。 问最多能有多少头牛可以同时得到喜欢的食物和饮料。 解析: 由于要同时得到喜欢的食物和饮料,所以网络流建图的时候要把牛拆点了。 如下建图: s -> 食物 -> 牛1 -> 牛2 -> 饮料 -> t 所以分配一下点: s  =  0, 牛1= 1~