房价爬虫保存

该代码使用Python的requests库爬取北京链家网站上的租房信息,通过正则表达式提取地区、小区名、面积、户型、朝向和价格等关键数据,并利用pandasDataFrame进行存储和处理,最后将数据保存到Excel文件中。
摘要由CSDN通过智能技术生成

房价的爬虫

步骤

  • 通过翻阅我们查看到总共页数一共是100页,那么我们需要通过format方法获取到这100个url地址列表url_list;

  • 遍历url列表,分别发送请求,获得响应html_str;

  • 利用正则表达式将到每个房屋element组成的列表det_dicts;

  • 遍历det_dicts,将房屋所在地区、小区名、面积、户型、朝向、价格等信息保存到空字典info_dicts中;

  • 注意,这里我们事先创建一个columns=[‘地区’,‘小区名’,‘面积’,‘户型’,‘朝向’,‘价格(元/月)’]的空DataFrame对象data,再创建另外一个DataFrame对象df,将字典info_dicts传入到df中,通过append方法将df添加到data中;

  • 通过主程序运行后,就可以将DataFrame保存到Excel文件中

    代码

import re
import pandas
import pandas as pd
import requests

#求100多行

df=pd.DataFrame(columns=('地区','小区名','面积','户型','朝向','价格(元/月)'))

headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                       'AppleWebKit/537.36 (KHTML, like Gecko)'
                       ' Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50'}
url='https://bj.lianjia.com/zufang/#contentList'
r_3 = requests.get(url, headers=headers)
ls1 = re.findall(r'\/">(.+?)<\/a>-<a href="', r_3.text)  # 地区
ls2 = re.findall(r'<\/a>-<a title="(.+?)" href="\/zufang\/', r_3.text)  # 找小区名
ls3 = re.findall(r'<i>\/<\/i>\s*(.+?㎡)', r_3.text)  # 找面积
ls4 = re.findall(r'<i>\/<\/i>\s*(.+?)\s*<span class="hide">', r_3.text)  # 找户型
ls5 = re.findall(r'<i>\/<\/i>(.+?)\s*<i>\/<\/i>', r_3.text)  # 找朝向
ls6 = re.findall(r'<span class="content__list--item-price"><em>(.+\d?)<\/em> 元\/月<\/span>', r_3.text)  # 找价钱
dict_1 = {"地区": ls1, '小区名': ls2, '面积': ls3, '户型': ls4, '朝向': ls5, '价格(元/月)': ls6}
data = pd.DataFrame(dict_1)

for pag_index in range(2,5):
    urls = 'https://bj.lianjia.com/zufang/'+'pg'+str(pag_index)+'/#contentList'
    r_4 = requests.get(urls, headers=headers)
    ls1 = re.findall(r'\/">(.+?)<\/a>-<a href="', r_4.text)  # 地区
    ls2 = re.findall(r'<\/a>-<a title="(.+?)" href="\/zufang\/', r_4.text)  # 找小区名
    ls3 = re.findall(r'<i>\/<\/i>\s*(.+?㎡)', r_4.text)  # 找面积
    ls4 = re.findall(r'<i>\/<\/i>\s*(.+?)\s*<span class="hide">', r_4.text)  # 找户型
    ls5 = re.findall(r'<i>\/<\/i>(.+?)\s*<i>\/<\/i>', r_4.text)  # 找朝向
    ls6 = re.findall(r'<span class="content__list--item-price"><em>(.+\d?)<\/em> 元\/月<\/span>', r_4.text)  # 找价钱
    dict_2 = {"地区": ls1, '小区名': ls2, '面积': ls3, '户型': ls4, '朝向': ls5, '价格(元/月)': ls6}
    data1 = pd.DataFrame(dict_2)
    df_Con = pd.concat([data, data1],axis=0,ignore_index = True) # 重新生成新的索引)
    data=df_Con
data.to_excel('2.xlsx') #保存到本地excel表
data_1=list(data['面积'])#[int('面积')/int('价格(元/月)')]
#输出
print((df_Con))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值