利用python爬取某壳的房产数据

以无锡的某壳为例进行数据爬取,现在房子的价格起伏很快,买房是人生一个大事,了解本地的房价走势来判断是否应该入手。

(建议是近2年不买,本人在21年高位抛了一套房,基本是通过贝壳数据判断房价已经到顶,希望此爬虫能够帮到各位。)

这里只爬了必看好房的数据,贝壳有放抓机制,无法跑全所有数据,有心的可以拿过去扩展一番。

复制代码
import requests
from pyquery import PyQuery as pq
import json
import pandas as pd
import datetime,time
columns = ['id','title','place','msg', 'price', 'per_meter','area','city']
areas=['滨湖区','梁溪区','新吴区','惠山区','锡山区','江阴市','宜兴市']
# 爬取某网页
def get_a_page(url,area):
    result = requests.get(url)
    doc = pq(result.text)
    ul = doc('.sellListContent')
    divs = ul.children('.clear .info.clear').items()
    count = 0
    realids=[]
    titles = []
    places = []
    msgs = []
    prices = []
    per_meters = []
    realarea=[]
    citys=[]
    for div in divs:
        count += 1
        realid=div.children('.address .priceInfo .unitPrice').attr('data-hid')
        title = div.children('.title a').text()
        place = div.children('.address .flood .positionInfo a').text()
        msg = div.children('.address .houseInfo').text()
        price = div.children('.address .priceInfo .totalPrice span').text()
        per_meter = div.children('.address .priceInfo .unitPrice span').text()
        city='无锡'
        dict = {
            'id':realid,
            'title': title,
            'place': place,
            'msg': msg,
            'price': price,
            'per_meter': per_meter,
            'area':areas[area],
            'city':'无锡'
        }
        realids.append(realid)
        titles.append(title)
        places.append(place)
        msgs.append(msg)
        prices.append(price)
        per_meters.append(per_meter)
        realarea.append(areas[area])
        citys.append(city)
        print(str(count) + ':' + json.dumps(dict, ensure_ascii=False))
    datas={
        'id':realids,
        'title': titles,
        'place': places,
        'msg': msgs,
        'price': prices,
        'per_meter': per_meters,
        'area':realarea,
        'city':citys
    }
    df = pd.DataFrame(data=datas, columns=columns)
    df.to_csv('wx'+time.strftime('%Y-%m-%d')+'.csv', mode='a', index=False, header=False)

if __name__ == '__main__':
    quyu=['binhu','liangxi','xinwu','huishan','xishan','jiangyinshi','yixingshi']
    index=0
    for qy in quyu:
        #print (index)
        #print (qy)
        for i in range(1, 20):
            get_a_page(f'https://wx.ke.com/ershoufang/{qy}/pg{i}tt9/',index)
        index=index+1
相关推荐
封步宇AIGC9 分钟前
量化交易系统开发-实时行情自动化交易-Okex K线数据
人工智能·python·机器学习·数据挖掘
封步宇AIGC11 分钟前
量化交易系统开发-实时行情自动化交易-Okex交易数据
人工智能·python·机器学习·数据挖掘
小爬虫程序猿14 分钟前
如何利用Python解析API返回的数据结构?
数据结构·数据库·python
波点兔16 分钟前
【部署glm4】属性找不到、参数错误问题解决(思路:修改模型包版本)
人工智能·python·机器学习·本地部署大模型·chatglm4
一点媛艺3 小时前
Kotlin函数由易到难
开发语言·python·kotlin
魔道不误砍柴功4 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
_.Switch5 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
测开小菜鸟6 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
萧鼎7 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸7 小时前
【一些关于Python的信息和帮助】
开发语言·python