成都是中国西部地区的重要中心城市,也是国家新一线城市之一。近年来,成都在经济发展、人口增长、城市建设等方面都取得了显著的成就,吸引了大量的人才和资本的流入,也带动了房地产市场的繁荣。2022年,成都新房和二手房成交量居全国第一,共成交了294380套。2023年4月,成都新房商品房成交了10577套,位居全国第二,仅次于上海。这些数据说明成都的房地产市场非常活跃,有着强大的需求和消费能力。
2023年4月,成都二手房参考均价为15627元/平,环比上涨0.31%,同比下跌1.42%。成都新房成交均价为20159元/平,环比持平。从区域来看,高新区、锦江区、武侯区、青羊区、金牛区等主城区的房价较高,均超过2万/平。而郫都区、新都区、温江区、龙泉驿区等远郊区的房价较低,多在1万/平左右。从走势来看,成都的房价在过去一年中呈现出稳中有升的态势,没有出现大幅波动。
那么今后成都的房价会如何发展呢?通过爬虫程序采集对房天下、安居客、知乎等相关网站的数据进行整理,可以有如下数据统计:
1、房屋成交价分析
月份 |
新房均价(元/平) |
环比变化 |
二手房均价(元/平) |
环比变化 |
2022年1月 |
160831 |
-0.15% |
156272 |
-0.31% |
2022年2月 |
160831 |
0% |
156272 |
0.31% |
2022年3月 |
160831 |
0% |
156272 |
-0.31% |
2022年4月 |
161081 |
0.16% |
156272 |
0.31% |
2023年1月 |
161083 |
0% |
155084 |
-0.76% |
2023年2月 |
161083 |
0% |
158804 |
2.40% |
2023年3月 |
161083 |
0% |
155084 |
-2.34% |
2023年4月 |
161273 |
0.12% |
2、房屋成交量分析
月份 |
新房销量(套) |
环比变化 |
二手房销量(套) |
环比变化 |
2023年1月 |
7129 |
-28.50% |
9973 |
-12.30% |
2023年2月 |
8564 |
20.10% |
8879 |
-10.90% |
2023年3月 |
11918 |
39.20% |
7308 |
-17.70% |
2023年4月 |
10206 |
-14.40% |
4958 |
-32.20% |
结合上述数据分析,成都的房价总体还是会趋于平稳上扬,但房价不太可能会出现暴涨或者暴跌的情况出现, 而是会保持相对稳定或者适度上涨。
下面的代码是实现上述数据采集的demo:
importjava.io.IOException; importjava.net.InetSocketAddress; importjava.net.Proxy; importjava.net.URL; importjava.net.URLConnection; importjava.util.ArrayList; importjava.util.List; importjava.util.concurrent.ExecutorService; importjava.util.concurrent.Executors; importorg.jsoup.Jsoup; importorg.jsoup.nodes.Document; importorg.jsoup.nodes.Element; importorg.jsoup.select.Elements; publicclassFangtianxiaCrawler { // 亿牛云爬虫代理加强版 代理IP地址和端口号privatestaticfinalStringPROXY_IP="www.16yun.cn"; privatestaticfinalintPROXY_PORT=代理端口号; // 亿牛云爬虫代理加强版 代理IP的用户名和密码privatestaticfinalStringPROXY_USERNAME="16YUN"; privatestaticfinalStringPROXY_PASSWORD="16IP"; // 房天下新房列表页URLprivatestaticfinalStringLIST_URL="https://newhouse.fang.com/house/s/"; // 线程数privatestaticfinalintTHREAD_COUNT=5; publicstaticvoidmain(String[] args) throwsIOException { // 创建代理对象Proxyproxy=newProxy(Proxy.Type.HTTP, newInetSocketAddress(PROXY_IP, PROXY_PORT)); // 设置代理IP的用户名和密码Authenticator.setDefault(newAuthenticator() { publicPasswordAuthenticationgetPasswordAuthentication() { returnnewPasswordAuthentication(PROXY_USERNAME, PROXY_PASSWORD.toCharArray()); } }); // 获取房天下新房列表页的HTML内容Documentdoc=Jsoup.connect(LIST_URL).proxy(proxy).get(); // 获取新房的总页数intpageCount=Integer.parseInt(doc.select(".txt").text().replaceAll("[^0-9]", "")); // 创建线程池ExecutorServiceexecutor=Executors.newFixedThreadPool(THREAD_COUNT); // 创建任务列表List<Runnable>tasks=newArrayList<>(); // 循环遍历所有新房列表页for (inti=1; i<=pageCount; i++) { // 创建任务Runnabletask=newCrawlTask(LIST_URL+"i"+i+"/", proxy); // 将任务添加到任务列表中tasks.add(task); } // 提交任务到线程池中执行for (Runnabletask : tasks) { executor.execute(task); } // 关闭线程池executor.shutdown(); } // 爬取新房信息的任务类privatestaticclassCrawlTaskimplementsRunnable { privateStringurl; privateProxyproxy; publicCrawlTask(Stringurl, Proxyproxy) { this.url=url; this.proxy=proxy; } publicvoidrun() { try { // 获取新房列表页的HTML内容Documentdoc=Jsoup.connect(url).proxy(proxy).get(); // 获取所有新房的链接ElementshouseLinks=doc.select(".nlcd_name > a"); // 遍历所有新房的链接,爬取新房的价格信息for (ElementhouseLink : houseLinks) { StringhouseUrl=houseLink.absUrl("href"); // 获取新房的HTML内容DocumenthouseDoc=Jsoup.connect(houseUrl).proxy(proxy).get(); // 获取新房的名称StringhouseName=houseDoc.select(".titlename > h1").text(); // 获取新房的价格StringhousePrice=houseDoc.select(".nhouse_price > .red > b").text(); // 打印新房的名称和价格System.out.println(houseName+":"+housePrice); } } catch (IOExceptione) { e.printStackTrace(); } } }
该代码首先使用代理IP连接到房天下新房列表页,然后解析列表页中的HTML内容,获取所有新房的链接,并将爬取新房价格信息的任务分配给多个线程执行。每个线程负责爬取一个新房的价格信息,并将其打印到控制台上。
可以根据需要采集的网站和数据进行修改。此外,还需要将代码中的THREAD_COUNT常量设置为希望使用的线程数。最后,将爬取到的新房价格数据整理成表格的具体方式可以根据实际需求进行定制。