之前在博客分享了利用 R 和 rvest 包爬虫的基础方法。现在就来实战一下:爬取链家网广州 40,000+ 套二手房的数据。 ![lianjia homepage](https://img2018.cnblogs.com/blog/1705277/201906/1705277-20190605133024627-717267069.png)
之前在 Web Scraping with R 说过的爬虫方法在这篇中就不在赘述了。这里就分享怎么样爬取网站中翻页的数据。
#### >> Web Scraping across Multiple Pages
首先观察翻页页面的 url 规律,比如广州链家二手房数据:
第一页:https://gz.lianjia.com/ershoufang/
第二页:https://gz.lianjia.com/ershoufang/pg2/
第三页:https://gz.lianjia.com/ershoufang/pg3/
......
由此可推断,url 为 "https://gz.lianjia.com/ershoufang/pg" + 页码
- 假设我们需要爬去第 1 页到第 100 页的房屋总价。那么我们可以先尝试爬取第一页的数据,并封装成一个函数.
getHouseInfo <- function(pageNum, urlWithoutPageNum) {
url <- paste0(urlWithoutPageNum, pageNum)
webpage <- read_html(url,encoding="UTF-8")
total_price_data_html <- html_nodes(webpage,'.totalPrice span')
total_price_data <- html_text(total_price_data_html)
data.frame(totalprice = total_price_data)
}
- 然后利用上述的函数循环爬取第 1 页到第 100 页的数据,并将多页的数据合并成一个 data frame
url <- "https://gz.lianjia.com/ershoufang/pg"
houseInfo <- data.frame()
for (ii in 1:1553){
houseInfo <- rbind(houseInfo, getHouseInfo(ii, url))
}
#### >> Sample Code
知道如何爬取翻页的数据后我们就可以尝试完整的爬取广州链家网上 4w+ 套二手房的详细信息(包括区域,小区,几室几厅,有无电梯等等)了。
数据量比较大,爬取数据需要一些时间。爬取完毕如果要保存数据需要注意选择适合的编码,不然容易乱码。提供一个可在 Mac Excel 打开的 cvs 格式。
>> 后续分析
1. [链家广州二手房的数据与分析——数据分析1](https://www.cnblogs.com/yukiwu/p/11271515.html) 2. [链家广州二手房的数据与分析——数据分析2](https://www.cnblogs.com/yukiwu/p/11333349.html)