成都是中国西部地区的重要中心城市,也是国家新一线城市之一。近年来,成都在经济发展、人口增长、城市建设等方面都取得了显著的成就,吸引了大量的人才和资本的流入,也带动了房地产市场的繁荣。2022年,成都新房和二手房成交量居全国第一,共成交了294380套。2023年4月,成都新房商品房成交了10577套,位居全国第二,仅次于上海。这些数据说明成都的房地产市场非常活跃,有着强大的需求和消费能力。
2023年4月,成都二手房参考均价为15627元/平,环比上涨0.31%,同比下跌1.42%。成都新房成交均价为20159元/平,环比持平,详细数据如下:
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:
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class FangtianxiaCrawler {
// 亿牛云爬虫代理加强版 代理IP地址和端口号
private static final String PROXY_IP = "www.16yun.cn";
private static final int PROXY_PORT = 代理端口号;
// 亿牛云爬虫代理加强版 代理IP的用户名和密码
private static final String PROXY_USERNAME = "16YUN";
private static final String PROXY_PASSWORD = "16IP";
// 房天下新房列表页URL
private static final String LIST_URL = "https://newhouse.fang.com/house/s/";
// 线程数
private static final int THREAD_COUNT = 5;
public static void main(String[] args) throws IOException {
// 创建代理对象
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_IP, PROXY_PORT));
// 设置代理IP的用户名和密码
Authenticator.setDefault(new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(PROXY_USERNAME, PROXY_PASSWORD.toCharArray());
}
});
// 获取房天下新房列表页的HTML内容
Document doc = Jsoup.connect(LIST_URL).proxy(proxy).get();
// 获取新房的总页数
int pageCount = Integer.parseInt(doc.select(".txt").text().replaceAll("[^0-9]", ""));
// 创建线程池
ExecutorService executor = Executors.newFixedThreadPool(THREAD_COUNT);
// 创建任务列表
List<Runnable> tasks = new ArrayList<>();
// 循环遍历所有新房列表页
for (int i = 1; i <= pageCount; i++) {
// 创建任务
Runnable task = new CrawlTask(LIST_URL + "i" + i + "/", proxy);
// 将任务添加到任务列表中
tasks.add(task);
}
// 提交任务到线程池中执行
for (Runnable task : tasks) {
executor.execute(task);
}
// 关闭线程池
executor.shutdown();
}
// 爬取新房信息的任务类
private static class CrawlTask implements Runnable {
private String url;
private Proxy proxy;
public CrawlTask(String url, Proxy proxy) {
this.url = url;
this.proxy = proxy;
}
@Override
public void run() {
try {
// 获取新房列表页的HTML内容
Document doc = Jsoup.connect(url).proxy(proxy).get();
// 获取所有新房的链接
Elements houseLinks = doc.select(".nlcd_name > a");
// 遍历所有新房的链接,爬取新房的价格信息
for (Element houseLink : houseLinks)
{
String houseUrl = houseLink.absUrl("href");
// 获取新房的HTML内容
Document houseDoc = Jsoup.connect(houseUrl).proxy(proxy).get();
// 获取新房的名称
String houseName = houseDoc.select(".titlename > h1").text();
// 获取新房的价格
String housePrice = houseDoc.select(".nhouse_price > .red > b").text();
// 打印新房的名称和价格
System.out.println(houseName + ":" + housePrice);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
该代码首先使用代理IP连接到房天下新房列表页,然后解析列表页中的HTML内容,获取所有新房的链接,并将爬取新房价格信息的任务分配给多个线程执行。每个线程负责爬取一个新房的价格信息,并将其打印到控制台上。
可以根据需要采集的网站和数据进行修改。此外,还需要将代码中的THREAD_COUNT常量设置为希望使用的线程数。最后,将爬取到的新房价格数据整理成表格的具体方式可以根据实际需求进行定制。