爬虫部分
// An highlighted block
def main():base_url1 = 'https://hz.58.com/xinfang/loupan/all/p'base_url2 = '/?PGTID=0d0091a8-0004-f055-d9b7-c447c3e1c187&ClickID=1'date_list = []for i in range(1,34):html = ask_url(base_url1+str(i)+base_url2)bs = BeautifulSoup(html, 'html.parser')list = bs.find_all(class_='item-mod')for item in list[2:]: # 前两个item-mod 存储的不是具体房产信息bs_mod = BeautifulSoup(str(item), 'html.parser')it1 = bs_mod.find_all(class_='items-name')[0]try:it2 = bs_mod.find_all(class_='price')[0]except:it2 = bs_mod.find_all(class_='price-txt')[0]date_list.append([it1.get_text(), it2.get_text(), transfrom(it1.get_text())])print('第%d页完成' %i)print('一共%d条' %len(date_list))save_Date(date_list,'杭州新房价格坐标.xls')
因为这里爬取的是新楼的房价,很多的地方都是在建中,很多都还没有定价,所以部分价格在源代码中的标签使用的是’price-txt’而不是’price’。
代用高德api接口实现地址的获取
def transfrom(addr):parameters = { 'keywords' : addr,'key' : '**********************'}base = 'https://restapi.amap.com/v3/place/text?parameters'try:response = requests.get(base , parameters , timeout = 2)res = json.loads(response.text)return res['pois'][0]['location']except:return '地址获取失败'
这里需要去高德的开放平台进行获取你的key简单的进行注册你的账号。这里在完成的时候,对于返回值的处理我搞了很久没搞好,后来才发现他的网页中本身可以进行返回值的查看,我使用的是对关键字搜索。
最后进行数据的上传就可以获得最终的成果图。
这个是以价格为参考圆圈越大价格越高,本来是想用颜色进行标识,但是效果实在太理想,系统默认的将大部分价格划分的颜色过分接近,没有办法让人直观的进行一眼辨识,最终选择大小来呈现价格的不同。