Python爬取并分析全国新楼盘数据

Python爬取并分析全国新楼盘数据

一、选题背景

Q:为什么选择选择此题?

随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战

Q:达到什么预期目标?

未来发展前景广阔,人口流入将会增加对于房产的需求,获取更多的新楼盘数据,并分析人口流动。

Q:项目背景

十三届全国人大四次会议5日上午9时在人民大会堂开幕,其中住房政策:“房住不炒”,解决好大城市住房突出问题!进行可视化分析。

二、主题式网络爬虫设计

Q:主题是网络爬虫名称

爬取并分析全国新楼盘数据

Q:主题式网络爬虫的内容

爬取最新中国新楼盘数据,并实现数据可视化。

Q:设计方案描述

爬虫使用到的模块有requests_html、requests_cache、bs4.BeautifulSoup、re等

三、主页体面的结构特征分析

这是一个的首页界面

Python爬取并分析全国新楼盘数据

结构特征

Python爬取并分析全国新楼盘数据

标签是div

结构分析

Python爬取并分析全国新楼盘数据

四、网络爬虫程序分析 定义函数

#定义好获取每个项目信息的函数。

1 def get_house_status(soup): 2   """ 3   获取房屋状态信息 4   """ 5     house_status = [] 6     status = soup.find_all(attrs={\'class\'\'fangyuan\'}) 7     for state in status: 8         _status = state.span.text 9         house_status.append(_status) 10     return house_status 11 12 def get_house_price(soup): 13   """ 14   获取房屋价格信息 15   """ 16     house_price = [] 17     regex = re.compile(\'\s(\S+)\s\') 18     prices = soup.find_all(attrs={\'class\'\'nhouse_price\'}) 19     for price in prices: 20         _prices = regex.findall(price.text) 21         _price = \'\' 22         if _prices[0] == \'价格待定\': 23             pass 24         else: 25             p = _prices[0].split(\'\')[0] 26             if \'\' in p: 27                 _price = p + \'元/套\' 28             else: 29                 _price = p + \'元/m2\' 30         house_price.append(_price) 31     return house_price 32 33 def get_house_address(soup, c_city): 34   """ 35   获取房屋地址信息 36   """ 37     house_address = [] 38     region = [] 39     regex = re.compile(\'\s(\S+)\s\') 40     addresses = soup.find_all(attrs={\'class\'\'address\'}) 41     for address in addresses: 42         _address = regex.findall(address.text) 43         if len(_address) > 1: 44             region.append(_address[0].split(\'[\')[1].split(\']\')[0]) 45         else: 46             region.append(c_city) 47         house_address.append(address.a[\'title\']) 48     return region, house_address 49 50 def get_house_type(soup): 51   """ 52   获取房屋类型信息 53   """ 54     house_type = [] 55     regex = re.compile(\'\s(\S+)\s\') 56     house_types = soup.find_all(attrs={\'class\'\'house_type clearfix\'}) 57     for _house_type in house_types: 58         type_list = regex.findall(_house_type.text) 59         type_str = \'\' 60         for i in type_list: 61             type_str += i 62         house_type.append(type_str) 63     return house_type 64 65 def get_house_name(soup): 66   """ 67   获取项目名称信息 68   """ 69     house_name = [] 70     regex = re.compile(\'\s(\S+)\s\') 71     nlcd_names = soup.find_all(attrs={\'class\'\'nlcd_name\'}) 72     for nlcd_name in nlcd_names: 73         name = \'\' 74         names = regex.findall(nlcd_name.text) 75 76         if len(names) > 1: 77             for n in names: 78                 name += n 79             house_name.append(name) 80         else: 81             house_name.extend(names) 82     return house_name

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgyfzj.html