Python爬取北京2.3万条租房信息,发现快租不起房子了!

Python爬虫获取租房数据 1 前言 租房/有房要出租的小伙伴们看过来~本文介绍如何用Python爬取上海链家租房数据。 此次侧重XPath的使用和反爬虫小技巧。XPath是用路径表达式在XML文档中选取节点,这里也同样适用于HTML文档的搜索。 阅读详情

1.概述

北上广深作为打工人最多的超一线城市,大部分都是租房生活着。自如作为目前第三方租房平台,应该算是该行业的龙头。但是最近蛋壳的暴雷,我们不得不更加警觉。那么自如都有多少open状态的房源呢,这些房源都是什么样的呢?这里我们爬取了自如北上广深四个城市共4.6万房源信息,单拿北京的数据来做详细介绍吧!

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入 源码也可

2.数据采集-爬虫

自如的租房信息每个筛选结果最多展示50页,约1500个左右。考虑到很多地区的租房数量超过1500个,我们可以通过增加筛选的方式进行遍历获取全部租房信息。 以北京为例,由于自如大本营在北京,我们发现北京有租房信息2.3万条以上,因此这里采用的是地区-房价区间 2个筛选项进行选择,其中筛选项为自定义以500为颗粒度。 在爬虫过程中,我们会发现频繁的请求数据会被封IP,同时自如的租房价格信息是图片位置决定的,需要进行特殊的处理。 自如爬虫注意事项: ①需要采用IP代理,避免封IP后无法请求数据 ②需要识别图片中数字及定位,从而获取具体的租金数据 由于爬虫部分的处理其实比较麻烦,考虑篇幅有限,这里仅做核心部分讲解,我们在后续再做专题介绍。

2.1.房屋信息解析

打开自如官网,F12到开发者模式,直接查看网页源码即可找到需要的房屋信息数据。本次我是采用的re正则表达式进行数据解析,当然大家也可以通过别的方式比如xpah或bs4等等进行解析。

 

# 获取具体房屋信息
houseId = re.findall('x/(.*?).html"target="_blank">', item)[0]
title = re.findall('target="_blank">(.*?)</a>',item)[0] # 房屋信息 朝向-小区-户型-卧次
large = re.findall('<div>(.*?)</div>', item)[0] # 房屋 面积-楼层
location = re.findall('<divclass="location">(.*?)</div>', item)[0] # 房屋 面积-楼层

2.2.房屋价格解析

对于刚才这个截图里7445元租金信息其实不是直接用的数字展示,而是有一个backgroundHtml和background-position决定。

我们打开backgroundHtml链接发现是一个含10个个位数数字的透明png图如下:

而价格里出现的四个 -188px、-160px、-160px和-40px对应上面的数字位置,通过关系我们可以匹配到。

backgroundHtml = re.findall('url\((.*?)\)', item)
priceList = re.findall('background-position:(.*?)px"></span>', item)# 房价数字图片地址

image = requests.get('http:' + backgroundHtml[0]).content
# 保存价格用图片到本地
f = open('.\price.png', 'wb')
f.write(image)
f.close() 
# 调用函数(见下面函数定义)获取价格数字字符串
text = get_pricetext()

# 获取价格
price = ''
for i in priceList:
    num = int(float(i) / -20) #对于不同情况中有折扣的是20,无折扣的是21.4
    price = price + text[num]

如何获取价格用图片中的数字及顺序呢,需要用到pytesseract进行图片数字识别,以及用Image给原始透明图片加白底。

# 由于数字图是png无法被识别,所以我们需要进行背景加白                   
def get_pricetext():
    # 给透明图片加白色背景
    im = Image.open('.\price.png')
    x,y = im.size 
    try: 
        p = Image.new('RGBA', im.size, (255,255,255))
        p.paste(im, (0, 0, x, y), im)
        p.save('.\price.png')
    except:
        pass
    
    # 获取图片中数字字符串
    text = pytesseract.image_to_string(Image.open(".\price.png"),
                                       config='--psm 10 --oem 3 -c tessedit_char_whitelist=1234567890',
                                       lang='eng')
    text = re.sub('\s','',text)
    
    return text

3.数据处理-清洗

在爬取数据的过程中,发现既定的数据解析方式总是出现一些问题,随着对异常数据的查看,发现同一个数据指标下的数据格式并不唯一化,因此需要不断的修正解析方法。为了更方便爬取原数据,在爬虫过程中采取了较为通用的格式,等数据采集下来之后再进行统一化的清洗处理。 以下是采集后的数据预览:

查看以上数据,其实房屋名称、面积/楼层及位置信息可以继续进行细化成更小的元数据供后续分析使用,对此我们来一一处理。

3.1.房屋名称数据清洗

对于我们来说,“合租·李村东里3居室-北卧”其实包含了类型、小区、户型和卧室朝向等信息,需要进行分拆。

# 房屋信息解析
# s = '合租·李村东里3居室-北卧'
# s = '合租·强佑·府学上院4居室-北卧'
# s = '整租·铁二区1室1厅-北'
# s = '整租·厂甸11号院1室1厅-东'
s = '整租·牛街182室1厅-西'
re.split(r'(.*?)·(.*)(\d居*室.*)-(.*)',s)

 

通过以上正则表达式的方式,我们可以采用apply进行处理:

df['类型'] = df['房屋名称'].apply(lambda x : re.split(r'(.*?)·(.*)(\d居*室.*)-(.*)',x)[1])
df['小区'] = df['房屋名称'].apply(lambda x : re.split(r'(.*?)·(.*)(\d居*室.*)-(.*)',x)[2])
df['户型'] = df['房屋名称'].apply(lambda x : re.split(r'(.*?)·(.*)(\d居*室.*)-(.*)',x)[3])
df['卧室朝向'] = df['房屋名称'].apply(lambda x : re.split(r'(.*?)·(.*)(\d居*室.*)-(.*)',x)[4])

 

 

3.2.房间信息数据清洗

我们看到关于房间大小、楼层等信息是在一个字段中,也是需要进行分拆的。

# 房间信息解析
# 我们在数据处理中发现存在异常数据(楼层如 7层 或 -1/5层)
s = '87.26㎡|11/29层'
re.split(r'(.*?)㎡\|(-?\d+)\/?(.*?)层',s)

 

同样采用正则的方式,用apply方法处理:

df['房间大小'] = df['面积/楼层'].apply(lambda x : re.split(r'(.*?)㎡\|(-?\d+)\/?(.*?)层',x)[1])
df['房间楼层'] = df['面积/楼层'].apply(lambda x : re.split(r'(.*?)㎡\|(-?\d+)\/?(.*?)层',x)[2])
df['房间楼房层数'] = df['面积/楼层'].apply(lambda x : re.split(r'(.*?)㎡\|(-?\d+)\/?(.*?)层',x)[3])

 

 

3.3.位置信息数据清洗

在位置信息中记录的是 小区距离地铁站的距离,我们需要的元数据是 地铁站和距离数字,同样也需要进行分拆。这里需要注意的是,在该列数据中,有部分数据是不含 此类信息的,需要进行特殊处理(这其实就是爬虫过程中解析判断遗留的情况)。

在这里我是用的比较特定的处理逻辑,先取异常数据中的地址信息,然后判断字符长度进行清洗处理。

# 替换非地铁信息位置
df['位置'] = df['位置'].apply(lambda x: re.sub('<(.*?)>','',x))
# 获取最近地铁站
def getMetro(x):
    if len(x) >= 9:
        return re.split(r'小区距(.*?)步行约(\d+?)米',x)[1]
    else:
        return ''
# 获取距离地铁站的距离
def getDistance(x):
    if len(x) >= 9:
        return re.split(r'小区距(.*?)步行约(\d+?)米',x)[2]
    else:
        return ''
        
df['附近地铁站'] = df['位置'].apply(getMetro)
df['距离地铁站距离'] = df['位置'].apply(getDistance)

 

到这里,基本元数据都已经解析获得。

3.4.选取需要用于分析的字段

原数据经过清洗处理后,有较多字段是我们后续用不上的,这里可以选择需要的字段即可。此外,我们后续需要新增一个字段“price”是指平均每平米每月的租金,在这里简单处理一下即可获得。

data = df[['id', '房屋名称', '租金', '租金单位', '标签', '地区', '类型', '小区', '户型',
       '卧室朝向', '房间大小', '房间楼层', '房间楼房层数', '附近地铁站', '距离地铁站距离']]
# 计算 租金 元/月/平米,取小数点后2位
data.loc[data['租金单位']=='月', 'price'] = round(data['租金']/data['房间大小'].astype(float),2)
data.loc[data['租金单位']=='天', 'price'] = round(30*data['租金']/data['房间大小'].astype(float),2)

 

 

4.房源相关数据统计与可视化

先简单看看 数据源,一共23,574个房源。

本节我们使用pyecharts进行可视化绘制。

# 引入需要用到的库
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.charts import *

4.1.房源分布(map)

自如北京的房源基本都分布在中心城区及次中心区,像延庆、怀柔、密云和平谷等郊区便没有任何房源数据。

# 统计各地区房源数
beijing = data.groupby('地区',as_index=False)['id'].count().sort_values('id',ascending=False).reset_index(drop=True)
beijing.loc[~beijing['地区'].str.endswith('区'),'地区']=beijing['地区']+'区'

 

 

绘图代码:

# 绘制地图(区)
c = (
    Map(init_opts=opts.InitOpts(theme='dark', width='800px'))
    .add("房源数", [list(z) for z in zip(beijing['地区'].to_list(), beijing['id'].to_list())], "北京", label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="自如北京房源数分布",
                                 subtitle='数据采集日期:2020年12月'), 
        visualmap_opts=opts.VisualMapOpts(max_=5000)
    )    
)
# c.render('map_beijing.html')
c.render_notebook()

4.2.各地区房源数

自如北京租房房源数最多的朝阳区高达7,925,远超过其他地区。其次是海淀区、丰台区和昌平区,基本都在2000+。

绘图代码:

# 绘制柱状图
bar = (Bar(init_opts=opts.InitOpts(theme='dark', width='800px'))
            .add_xaxis(beijing['地区'].to_list())
            .add_yaxis("", beijing['id'].to_list())
            .set_series_opts(label_opts=opts.LabelOpts(is_show=True, 
                                                       position='right',
                                                       font_style='italic'),
                            itemstyle_opts=opts.ItemStyleOpts(
                                color=JsCode("""new echarts.graphic.LinearGradient(1, 0, 0, 0, 
                                             [{
                                                 offset: 0,
                                                 color: 'rgb(255,99,71)'
                                             }, {
                                                 offset: 1,
                                                 color: 'rgb(32,178,170)'
                                             }])"""))
                            )
            .set_global_opts(
                title_opts=opts.TitleOpts(title="自如北京房源数量",
                                         subtitle='数据采集日期:2020年12月'),
                xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
                legend_opts=opts.LegendOpts(is_show=True))
            .reversal_axis()
        )
bar.render_notebook()

4.3.各区房源数占比

朝阳区和海淀区基本是大部分公司聚集地,自如在其的房源数占比也接近自如北京全部的一半!!

绘图代码:

# 富文本
rich_text = {
    "a": {"color": "#999", "lineHeight": 22, "align": "center"},
    "b": {"fontSize": 12, "lineHeight": 33},
    "per": {
        "color": "#eee",
        "backgroundColor": "#334455",
        "padding": [2, 4],
        "borderRadius": 2,
    },
}

location = beijing['地区'].to_list()
num = beijing['id'].to_list()

pie = (Pie(init_opts=opts.InitOpts(theme='dark', width='800px',
                                   height='560px',
                                  ))
       .add('房源数', [list(z) for z in zip(location, num)],
            radius=200, #设置饼图半径
            label_opts=opts.LabelOpts(position='outsiede',
                                     formatter="{b|{b}: }{c}  {per|{d}%}  ",
                                     rich=rich_text))
       .set_global_opts(legend_opts=opts.LegendOpts(is_show=False),
                       title_opts=opts.TitleOpts(title="自如北京各区房源数量占比",
                                         subtitle='数据采集日期:2020年12月'),)
       )
pie.render_notebook()

4.4.租房类型分布

自如的租房主要分为三类:合租、整租和豪宅(我这里去掉了自如寓)。不得不说,朝阳的房子真多,而且 豪宅这种只在东城区和朝阳才有!!

# 租房类型分布统计
houseType = data.pivot_table(values='id',index='地区',columns='类型',aggfunc='count').fillna('')

 

绘图代码:

# 绘制租房类型分布
bar = (
    Bar(init_opts=opts.InitOpts(theme='dark', width='800px'))
    .add_xaxis(houseType.index.to_list())
    .add_yaxis('合租', houseType['合租'].to_list())
    .add_yaxis('整租', houseType['整租'].to_list())
    .add_yaxis('豪宅', houseType['豪宅'].to_list())
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=True),
                     xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
                     title_opts=opts.TitleOpts(title="自如北京各区租房类型分布",
                                         subtitle='数据采集日期:2020年12月'),
                    )   
)
bar.render_notebook()

豪宅是啥样的

比如下面这个:

海晟名苑(北区) 本月均价:103659元/平米 所在板块:东城 东直门外 总户数:352户 绿化率:50%(绿化率高) 停车位:暂无数据 物业类型:公寓 竣工时间:2015年

 

 

4.5.地铁站附近房源数据

对于打工人来说,好的房源是靠近地铁站的,那么那些地铁站附近房源最多呢?

metro = data.groupby(['地区','附近地铁站'],as_index=False)['id'].count().sort_values(['地区','id'],ascending=False).reset_index(drop=True)
metro = metro[metro['附近地铁站']!='']

这里我们仅展示 朝阳、海淀、丰台和昌平区:朝阳的十里堡、立水桥南,海淀的永泰庄、农大南路,丰台的角门东,昌平的回龙观东大街、天通苑南站、龙泽、霍营等等都是很热门的。

绘图代码:

# 绘制组合图
bar1 = (Bar()
       .add_xaxis(metro[metro['地区']=='朝阳'].head()['附近地铁站'].to_list())
       .add_yaxis('朝阳区', metro[metro['地区']=='朝阳'].head()['id'].to_list())
       .set_global_opts(legend_opts=opts.LegendOpts(is_show=True, pos_right="70%",pos_top="10%"),
                     xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
                     title_opts=opts.TitleOpts(title="自如北京各区地铁站附近房源数前5名",
                                         subtitle='数据采集日期:2020年12月'))
       )

bar2 = (Bar()
       .add_xaxis(metro[metro['地区']=='海淀'].head()['附近地铁站'].to_list())
       .add_yaxis('海淀区', metro[metro['地区']=='海淀'].head()['id'].to_list())
       .set_global_opts(legend_opts=opts.LegendOpts(is_show=True, pos_right="70%",pos_top="52%"),
                     xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)))
       )

bar3 = (Bar()
       .add_xaxis(metro[metro['地区']=='丰台'].head()['附近地铁站'].to_list())
       .add_yaxis('丰台区', metro[metro['地区']=='丰台'].head()['id'].to_list())
       .set_global_opts(legend_opts=opts.LegendOpts(is_show=True, pos_left="70%", pos_top="10%"),
                     xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)))
       )

bar4 = (Bar()
       .add_xaxis(metro[metro['地区']=='昌平'].head()['附近地铁站'].to_list())
       .add_yaxis('昌平区', metro[metro['地区']=='昌平'].head()['id'].to_list())
       .set_global_opts(legend_opts=opts.LegendOpts(is_show=True, pos_left="70%",pos_top="52%"),
                     xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)))
       )

grid = (Grid(init_opts=opts.InitOpts(theme='dark', width='800px',))
        .add(bar1,grid_opts=opts.GridOpts(pos_bottom="60%", pos_right="60%"))
        .add(bar2,grid_opts=opts.GridOpts(pos_top="60%",pos_right="60%"))
        .add(bar3,grid_opts=opts.GridOpts(pos_bottom="60%", pos_left="60%"))
        .add(bar4,grid_opts=opts.GridOpts(pos_top="60%",pos_left="60%"))
        
        )
grid.render_notebook()

4.6.租金前10名地铁站圈

平均租金前10的地铁站圈,平均每平米每月租金都高达320元,相当于10平米的单间均价每月3200以上!!

metroPrice = data.groupby('附近地铁站',as_index=False)['price'].mean().sort_values('price',ascending=False).reset_index(drop=True)

 

绘图代码:

# 绘制柱状图
bar = (
    Bar(init_opts=opts.InitOpts(theme='dark', width='800px'))
    .add_xaxis(metroPrice.head(10)['附近地铁站'].to_list())
    .add_yaxis('', metroPrice.head(10)['price'].round(2).to_list())
    .set_series_opts(label_opts=opts.LabelOpts(formatter='{c}'))
    .set_global_opts(legend_opts=opts.LegendOpts(is_show=True),
                     xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
                     title_opts=opts.TitleOpts(title="自如北京地铁附近租金前10名(元/月/平米)",
                                         subtitle='数据采集日期:2020年12月'),
                    )       
)
bar.render_notebook()

4.7.各区合租类平均租金箱线图

东城、西城和海淀区在合租类租房平均在300左右,大部分其实都是超过300(即10平米月租金3000+)。

绘图代码:

# 箱线图
# 合租类
x_data = list(data['地区'].unique())
y_data = [data[(data['地区']==x)&(data['类型']=='合租')]['price'].to_list() for x in x_data]

Box = (Boxplot(init_opts=opts.InitOpts(theme='dark', width='800px'))
       .set_global_opts(legend_opts=opts.LegendOpts(is_show=True),
                     xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),
                     title_opts=opts.TitleOpts(title="自如北京各区【每平米每月房租】箱线图-合租类",
                                         subtitle='数据采集日期:2020年12月'),
                    )
      ) 
Box.add_xaxis(x_data)
Box.add_yaxis("", Box.prepare_data(y_data))
Box.render_notebook()

4.8.各区整租类平均租金箱线图

整租类平均租金低于合租类,约为合租类的一半,毕竟一般都带有客厅或者厨房之类,整体空间较大。 比如,我们常见的合租单间可能是12平米,价格在3600左右,但是对于整租50平左右的可能要价在7000左右。

 

5.房间相关数据统计与可视化

就房间本身而言,价格、大小、楼层、卧室朝向以及距离地铁站距离等等都是我们在选择的时候会考虑的点。 简单做相关关联散点图,发现其实房间大小越大均价越低,其他方面似乎并没有太明显的关系。 本节会涉及到seaborn绘图库的使用。

# 引入相关绘图库
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['Microsoft YaHei'] #设置全局默认字体 为 幼圆
plt.rcParams['axes.unicode_minus'] = False # 解决中文字体下负号显示问题

import seaborn as sns
sns.set_style("darkgrid",{"font.family":['Microsoft YaHei', 'SimHei']})   #seaborn绘图的字体设置

 

绘图代码:

plt.rcParams["axes.labelsize"] = 16  # 设置全局轴标签字典大小
# 由于部分房源未标注距离地铁站距离,这里我们只选有此数据的
score = data[data['距离地铁站距离']!=''][['price','房间大小','房间楼层','距离地铁站距离','类型']]
score['距离地铁站距离'] = score['距离地铁站距离'].astype('int')
# 散点图矩阵
sns.pairplot(score, hue='类型',height=3)

5.1.合租类房间大小直方图

大部分的合租类房间大小在10平米上下,这便是绝大多数租房客们的现状,一张床、一个书桌再带上一个稍微大点的衣柜就基本满了。

 

 

绘图代码:

plt.figure(figsize=(15,8))
sns.set_context("talk")
sns.histplot(data[data['类型']=='合租'].房间大小).set(ylabel='数量')

5.2.整租类房间大小直方图

大部分的整租类房间大小在40-60平米之间,这类房间一般都是一室一厅,大一点的会带厨房,对于个人来说是非常理想的居住环境,但是租金一般都在7000左右,属实有点高了。

 

5.3.合租类房间租金直方图

图中有部分是在最左侧,这部分是日租的房子。我们看北京整体,合租类单间大部分落在2000-4000之间。

再看看海淀区,大部分落在3000上下

 

5.4.整租类房间租金直方图

图中有部分是在最左侧,这部分是日租的房子。我们看北京整体,合租类单间大部分落在5000-7500之间。

再看看海淀区,基本上都落在5000+以上,以7000左右居多。

 

5.5.房源距离地铁站距离直方图

其实大部分的房源距离最近地铁站步行距离较近,1000米以内。绝大多数的房源距离最近地铁站直线距离在1.5公里,感觉步行到地铁站也就15分钟以内。

 

5.6.平米租金与距离地铁站距离回归图

简单做回归关系图,大致呈现距离地铁站越近其平均平米房租越低。不过,大家可以试着做归一化处理后再来看,可能会更明显,这里不做展开,大家留作作业吧!

 

 

5.7.各区卧室朝向与平米租金热力图

我们观察卧室朝向和平均平米租金热力图,怎么感觉北卧和东北卧的价格更高呀,反正我住的是北卧!!

# 数据统计
data_table = data[data['类型']=='合租'].pivot_table(values='price',index='卧室朝向',columns='地区',aggfunc='mean')

 

绘图代码:

# 卧室朝向价格热力图
plt.figure(figsize=(15,8))
# sns.set_context("talk")
sns.set_context("notebook")
sns.heatmap( data_table, cmap='Reds', annot=True, fmt='0.2f', linewidths=0.2)

5.8.户型分布

合租房以3居室为主,其次是4居室和2居室;整租房以一室一厅和二室一厅为主,其他户型较少。 原文地址:Python爬取自如北京2.3万条租房信息,发现快租不起房子了_dxawdc的博客-优快云博客


 

 

Python爬取链家租房信息并保存数据至本地 接下来查看房屋详情页,我想要的是标题、月租价格、以及”房屋信息“中的面积、朝向、楼层、电梯、车位、用水、用电、燃气、采暖这些信息。首先打开我们的目标网站,我想爬的是链家官方的锦江区一居室,七百多条条数据完全够用了。打印出错的url地址,发现这个页面的结构和其他的不同。1、请求租房首页,获取列表中各个房屋的详情页url。发现href中的url,这是我们第二次请求所需要的。2、请求各个房屋的详情页,爬取其中的房屋详情信息。获取多页:(需要通过观察和尝试,此处不赘述)3、翻页,爬取更多数据。 阅读详情

相关推荐

python爬取租房网站数据

为什么我们要爬取租房网站的数据呢?在贝壳的页面上找的话,我们需要一个个点开房源信息,这样太浪费时间。并且平时又比较忙,没有的太多的时间去现地看房。能不能尽快地帮助我们找到符合要求的房源,快速筛选出3-5个最佳的选项。利用python爬虫就可以实现这个功能。一、打开PyCharm工具,创建python文件,导入以下模块二、创建文件夹用来保存爬取的数据# 如果'file'文件不存在就创建#os.path.exists()检查目录是否存在# 打开'file'下的'house.csv'文件。

m0_74285134的博客 774

Python爬取自如北京2.3万条租房信息,发现快租不起房子了

文章目录1.概述2.数据采集-爬虫2.13.数据处理-清洗4.数据分析-统计5.数据展示-可视化6.总结 1.概述 2.数据采集-爬虫 自如的租房信息每个筛选结果最多展示50页,约1500个左右。考虑到很多地区的租房数量超过1500个,我们可以通过增加筛选的方式进行遍历获取全部租房信息。 以北京为例,由于自如大本营在北京,我们发现北京有租房信息2.3万条以上,因此这里采用的是地区-房价区间 2个筛选项进行选择,其中筛选项为自定义以500位颗粒度。 在爬虫过程中,我们会发现频繁的请求数据会被封IP,同时自如的

可以叫我才哥 2533

Python爬取租房信息

在上面的示例程序中,我们使用".list > li"选择器获取租房信息列表中的每一个房源,并使用".des > h2 > a"选择器获取标题,使用".money > b"选择器获取价格。在获取网页内容后,我们可以使用BeautifulSoup库来解析网页内容并提取所需的租房信息。以上是一个简单的Python爬虫程序,可以用于爬取58同城的租房信息。如果需要获取更多的租房信息,可以修改URL中的pn参数来获取不同页码的租房信息。在国内市场上,比较常用的租房信息网站包括58同城,赶集网,安居客等。

2301_79366332的博客 671

Python案例实现|爬取租房网站信息

本实战项目的数据来自于“北京链家网”的租房数据,网址为https://bj.lianjia.com/zufang/。

不断学习,不断进步,提高自己 5349

使用python爬取某租房网站租房信息

使用python爬取某租房网站租房信息,并使用excel保存

python爬取自如租房网站租房数据最详细的讲解

使用python对自如租房网站进行爬取信息,讲解非常详细,最全讲解。拥有最详细的讲解、最好的解释、最清晰的思路,这就是我们最纯粹的技术,也是我们的优势,相信这个程序可以为你打开爬虫道路上的一扇窗,也可以为你从底层学习python爬虫提供帮助。从技术到只是进行彻底的讲解,保证用户可以轻松快速的上手并且可以进行相应的修改。对于想做python课设但是不会写的同学,这将是你的一大助力,拥有着详细的讲解,使广大学生进行学习。对于想学习爬虫但是没有资源和渠道的这会是你进行python学习的第一步,这也是你上手较快的代码。对自如租房网站拥有着详细的解析,依次从租房页面到租房信息详情页面都十分详细,为学习python的同学打开爬虫之旅,可以作为python爬虫入门代码,拿到便可以运行。上手简单没有门槛,可以作为入门的第一个爬虫代码。详细的讲解为你指引爬虫学习道路上前进的方向,也可以为学习过python的同学但是不熟练的同学梳理思路,以便于之后对python爬虫又更深的理解,同时也可以学的更好。这会是广大python学习爬虫的一大“利器”,辅助你在python爬虫道路上不断前进,不断地向前学习。

30个Python练手项目

大家好,今天为大家推荐一个Pythoner和他的公众号:可以叫我才哥。才哥目前从事游戏运营,是我的读者也是我的好朋友。他最早只是用excel和tableau等工具进行游戏数据分析,后来从0...

Python数据之道 537

python爬取北京连家租房数据,可运行的python程序,打开你的爬虫之旅

使用python的相关的库:requests,对北京连家租房网站的数据进行爬取,包括网站中的各项数据,例如,位置、租金、租房面积等等数据进行爬取。 是一个可以爬虫入门的文件,带领你走进python的爬虫神奇世界。 作为一个使用requests库的小案例,可以调动你的学习兴趣。 同时也可以关注我,以后会发一些更加神奇的程序,并且不仅仅是python爬虫,还有flask框架、数据算法、数据可视化、matlibplot、pyecharts、以及软件开发、数据库的操作、hadoop、spark等等。欢迎大家前去关注,将来不会的也可以问我,这样的话,我可以进我的绵薄之力去解决问题,并且尽我最大的努力去给大家解答相关的问题。 一个新晋博主欢迎关注与私信我。

偶然发现一个学习python的好地方

大家好,今天推荐一个我的在学习python路上结识的好朋友:才哥。才哥是枚游戏运营,为了高效的处理游戏运营中的数据分析相关工作,自学python,致力于技术让工作更轻松。才哥乐于分享,他将...

weixin_43373042的博客 357

宝骏kiwi 630 730 560 E100 E200 E300 310 510 610 330 530维修手册电路图资料线路图接线图更新

2020-2022年宝骏RS-3维修手册和电路图。2020-2022年宝骏RS-3维修手册和电路图。2019-2021年宝骏RC-6维修手册和电路图。2019-2021年宝骏RC-6维修手册和电路图。2019-2020年宝骏RS-5维修手册和电路图。2019-2020年宝骏RS-5维修手册和电路图。2019-2020年宝骏RM-5维修手册和电路图。2019-2020年宝骏RM-5维修手册和电路图。2019-2021年宝骏510维修手册和电路图。2019-2021年宝骏510维修手册和电路图。

weixin_45821055的博客 1771

【RK3588 NPU性能调优实战】多线程异步推理YOLOv5,榨干6TOPS算力

本文详细解析了如何在RK3588 NPU上通过多线程异步推理优化YOLOv5目标检测性能,实现6TOPS算力的最大化利用。通过线程池设计、流水线化帧处理及避开内存带宽瓶颈等技巧,将NPU利用率从30%提升至82%,帧率显著提高至61.2FPS。文章还提供了环境配置、代码实现及性能对比数据,助力开发者高效部署AI模型。

weixin_29034963的博客 340

利用Python Scrapy框架爬取“房天下”网站房源数据

分析网页 “房天下”网站首页 由于数据量较大,本次只获取如下图热门城市房源数据 点击上图中的热门城市入口会进入该城市的首页,该网页下存放着新房、二手房以及租房的url链接。 以上海为例:url=https://sh.fang.com/ : 上海新房:url=https://sh.newhouse.fang.com/house/s/ 二手房:url=https://sh.esf.fang...

小肥柴YD的博客 7079

黑群晖DSM7.0.1物理机安装教程

使用芯片无忧工具,查看U盘的和。使用,格式化U盘。使用镜像写入工具,把引导写入U盘。修改文件,可以使用工具把文件复制到桌面,通过修改好之后,拖进这个界面中。或者在电脑中,查看U盘,打开U盘中的文件直接修改。具体修改内容如下:PID修改为U盘的PIDVID修改为U盘的VID默认只有mac1=a8412083CB52 mac2=0a11323D47F7 ,增加:mac3=a15823C08000 mac4=a23C04158B52 mac5=82a002524158 mac6=38233052415aS

JingLisen的博客 2万+

大数据实训_Python爬虫数据采集之自如

background-position与background-image分别为背景位置与背景图,在浏览器中查看背景图链接且四个数字对应的图片链接是相同的,不同的是图片位置,但经过规律寻找,其加密是通过将数字乱序存放于图片中,再定位显示,我们需要做的工作有: (1) 获取乱序存放数字的图片;尝试修改background-position的值,发现如果第一个数字的 background-position改为-0,页面显示数据变为6030,也就是第一个数字。在此基础上,加上图片识别与数字定位即可。

Ohoaaa的博客 1392

FPGA新手必看:用USB转TTL实现串口通信的完整流程(附CH340G电路详解)

本文为FPGA新手提供了通过USB转TTL模块实现串口通信的完整实战指南。详细解析了CH340G电路设计要点、硬件连接方法,并分享了经过验证的Verilog代码框架,帮助读者快速掌握FPGA与PC通信的核心技术,解决电平匹配与波特率设置等常见问题。

cake8的博客 1049

佳能C3025打印机扫描方法

佳能C3025彩色打印机扫描方法 步骤一、如果打印机处于休眠状态,可按图中标记的按钮唤醒打印机; 然后点击屏幕上的【扫描】 步骤二、扫描类型选择【文件】 步骤三、点击屏幕上的【地址簿】 步骤四、此时屏幕胡看到名字,如果看不到自己的名字,可往下滑动直到看到自己的名字,然后点击自己的名字,再点击右下角的【应用】 步骤五、点击【发送设置】,可看到文件格式为PDF,点击可以选择JPEG的图片格式。...

weixin_46019317的博客 2万+

安居客无锡二手房数据获取

安居客无锡二手房用selenium模拟浏览器抓取使用requests抓取网页,用bs4解析网页使用lxml解析网页 (xpath) 网址:https://wuxi.anjuke.com/sale/ 用selenium模拟浏览器抓取 # 用selenium模拟浏览器抓取 # selenium版本3.141.0 # firefox版本86.0 # geckodriver0.29.0 # geckodriver下载地址:https://github.com/mozilla/geckodriver/releases

weixin_43210595的博客 825

Python+Vue计算机毕业设计风电场监控系统的设计与实现7bd6i(程序+LW+源码+部署)

Python3.7.7+Django+Mysql5.7+pip list+HBuilderX(Vscode也行)+Vue+Pychram社区版。2. 前端:vue+css+javascript+jQuery+easyUI+highcharts。2.IDE环境:Python和Python 社区版都可以。Django + Vue +Python+Mysql 等等组成,B/S模式等等。该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。1. 后端:Python、Vue、Django、Mysql。

华信计算机毕设源码程序 341

Python通过pyecharts对爬虫房地产数据进行数据可视化分析(一)

我们爬取到的房产数据,主要是武汉二手房的房源信息,主要包括了待售房源的户型、面积、朝向、楼层、建筑年份、小区名称、小区所在的城区-镇-街道、房子被打的标签、总价、单价等信息。 库:numpy、pandas、pyecharts、jieba 图形:Bar(柱状图)、Pie(饼图)、Histogram(直方图) 、Scatter(散点图)、Map(地图)和WordCloud(词云图): 三、可视化展示效果 执行上述代码后会生成一个网页文件:,如下图所示: 完整代码: 选择一个浏览器打开如图所示: 可自由拖拽调

rubyw的博客 4188

【Visual Assist X助手安装问题】Visual Assist X无法安装(双击安装包没反应) | Visual Assist X安装后在Visual Studio中找不到(亲测有效)

本文分享了Visual Assisant X助手的安装与使用问题的详细解决办法,因为网上搜集的信息比较少,所以有一定的参考价值。考虑到很多开发新手会遇到上述问题,可能对Windows系统不熟悉,所以相关操作步骤讲解的很详细!

dvlinker的技术专栏 6万+

PyTorch生成式人工智能(3)——使用PyTorch构建神经网络

在本节中,我们使用 PyTorch 在简单数据集上构建了一个神经网络,训练神经网络来映射输入和输出,并通过执行反向传播来更新权重值以最小化损失值,并利用 Sequential 类简化网络构建过程;介绍了获取网络中间值的常用方法,以及如何使用 save、load 方法保存和加载模型,以避免再次训练模型。

盼小辉丶的博客 1万+

我用Python爬取了租房网站的信息,再也不怕租不到舒适的房啦

python爬虫需要学习那些知识呢?学习一些抓包知识,有些网站防爬,需要人工浏览一些页面,抓取数据包分析防爬机制,然后做出应对措施。比如解决cookie问题,或者模拟设备等。不过对前端也要比较熟悉,比如说html和简单的js和web框架什么的。现在我们用Python爬取租房网站信息,来学习pyhton。猪短租是一个租房网站,上面有很多优质的民宿出租信息,下面我们以成都地区的租房信息为例,来尝试爬取...

pythonxuexi的博客 5454

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

爬取各公寓平台租房信息并进行分析

一、分析的目的:      现在长租公寓发展势头很猛,不论是市场规模还是市场前景,都在向好的方面发展。短短两年时间,有数不清的的长租公寓公司成立,传统的地产公司、中介公司都介入了这个市场。简洁、舒适的风格,管家式的服务十分受年轻人喜爱。今天就来看看魔都的租房情况。(我也是住在这种公寓里的,吐槽一下,好看归好看,上海的房租本来就贵,这种公寓加上装修、人工的成本,更贵了很多)1.观察上海各个地区租房房...

lbship的博客 4026

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

python爬虫分析——广州租房信息爬取并分析

Python数据分析之广州租房信息爬取与分析

LSH1628340121的博客 3235

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

上一篇: Python爬虫实现无限刷不背单词app的酷币!很有意思!
下一篇: 关于天猫抢茅台的Python秒杀脚本!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值