北京市房价预测---数据收集
生活随笔
收集整理的這篇文章主要介紹了
北京市房价预测---数据收集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
藍房網爬蟲bs4+requests+北京
- 1.查看網址的結構
- 2.soup.select()方法的常用方法
- 3.爬蟲代碼
- 4.爬取結果
1.查看網址的結構
由下圖可知樓盤信息的url。明顯可知后綴為search-y{}。收集的信息為樓盤名、地址、開盤時間、價格、銷售狀態。
2.soup.select()方法的常用方法
1、class 對于html內的內容,可以通過class來進行定位,一般形式為: soup.selecet('.class') 這樣可以定位到所有class內容的內容。 2、id id在一個html中是唯一的,因此可以通過id來找尋唯一的內容,形式為: soup.select('#id') 3、標簽 標簽的話,可以直接尋找: soup.select('a') 4、組合查找 某一類下的某個標簽中的內容,采用空格隔開: soup.select('.class a')3.爬蟲代碼
def getHousesDetails(url):from bs4 import BeautifulSoupimport requestsrequest = requests.get(url)request.encoding = 'utf-8'soup = BeautifulSoup(request.text,'lxml')houses = soup.select('.lpList')housesDetails = []for house in houses:#獲取樓盤名字houseName = house.select('.title h2 a')[0].text#獲取樓盤地址address = house.select('.lpTxt div')[1].select('p')[1].text.strip('樓盤地址: 查看地圖')if(len(address) >= 16):houseDetailHref = house.select('.title h2 a')[0]['href']request = requests.get(houseDetailHref)request.encoding = 'utf-8'soup = BeautifulSoup(request.text,'lxml')address = soup.select('.toplpMsg ul li div i')[0].text.strip('樓盤地址:')#獲取樓盤開盤時間openTime = house.select('.lpTxt div')[1].select('p')[3].text.strip('開盤時間:')#獲取樓盤價格price = house.select('.price p b')[0].text#獲取樓盤銷售狀態def numberToString(number):switcher = {1: "在售",3: "尾盤",5: "未售",15: "售罄"}return switcher.get(number,'未知')saleStatusImg = house.select('.title p img')[0]['src']saleStatusId = int(saleStatusImg.lstrip('/public/images/state_').rstrip('.jpg'))saleStatus = numberToString(saleStatusId)#將所有樓盤信息做成樓盤信息字典houseDetails = {}houseDetails['houseName'] = houseNamehouseDetails['address'] = addresshouseDetails['openTime'] = openTimehouseDetails['price'] = pricehouseDetails['saleStatus'] = saleStatushousesDetails.append(houseDetails)return housesDetailsdef getAllHousesDetails():maxPageNumber = 208urlBefore = 'http://house.lanfw.com/bj/search-y{}'allHousesDetails = []for i in range(1,maxPageNumber+1):url = urlBefore.format(i)allHousesDetails.extend(getHousesDetails(url))import pandasdataframe = pandas.DataFrame(allHousesDetails)return dataframeif __name__ == '__main__':allHousesDetails = getAllHousesDetails()allHousesDetails.to_excel('houseDetails2.xlsx')4.爬取結果
獲取北京樓盤結果2073條。
參考:https://www.jianshu.com/p/72fd7898ea8a
總結
以上是生活随笔為你收集整理的北京市房价预测---数据收集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: diy高手在民间
- 下一篇: python有没有网页版的pyqt_Py