用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

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互