使用 python 和 Selenium 进行数据分析:北京二手房价格
北京二手房市场是一个热门的话题,许多人都想了解北京二手房的价格走势、供需情况和影响因素。然而,要获取北京二手房的相关数据并不容易,因为一些网站可能会限制访问、设置验证码或阻止抓取。为了解决这个问题,我们可以使用python和Selenium这两个强大的工具,来进行代理IP网页采集和数据分析。
python是一种广泛使用的编程语言,它有着丰富的库和框架,可以方便地处理各种数据。Selenium是一个自动化测试工具,它可以模拟浏览器的行为,来操作网页上的元素。通过结合python和Selenium,我们可以实现以下功能:
- 使用爬虫代理IP来绕过网站的访问限制或阻止
- 使用Selenium来模拟浏览器打开网页,并执行JavaScript代码
- 使用python来解析网页上的数据,并保存到本地或数据库,对数据进行清洗、处理和分析
下面,我们以北京二手房房价为例,来展示如何使用python和Selenium进行代理IP网页采集和数据分析。
首先,我们需要安装python和Selenium,并导入一些必要的库:
# 安装python和Selenium
# pip install python
# pip install selenium
# 导入库
import requests
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
接下来,我们需要设置一个Selenium的webdriver,并使用爬虫代理IP来打开目标网站(这里以链家网为例):
from selenium import webdriver
# 设置代理IP的主机、域名、用户名和端口
# 亿牛云 爬虫代理加强版
proxy_host = "www.16yun.cn"
proxy_port = "8080"
proxy_username = "16YUN"
proxy_password = "16IP"
# 设置webdriver选项,使用代理IP
options = webdriver.ChromeOptions()
options.add_argument(f"--proxy-server=http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}")
# 创建webdriver对象,并打开目标网站(这里以链家网为例)
driver = webdriver.Chrome(options=options)
driver.get("https://bj.lianjia.com/ershoufang/")
然后,我们需要使用Selenium来定位网页上的元素,并获取我们需要的数据(这里以每个区域的二手房数量和均价为例):
# 定义一个空列表来存储数据
data = []
# 定位每个区域的元素,并获取其文本内容(这里使用了显式等待)
elements = WebDriverWait(driver, 10).until(
EC.presence_of_all_elements_located((By.XPATH, "//div[@data-role='ershoufang']/div/a"))
)
# 遍历每个元素,并提取其文本内容中的区域名称、二手房数量和均价
for element in elements:
text = element.text # 例如:"东城 1234套 123456元/平"
name = text.split()[0] # 区域名称,例如:"东城"
count = text.split()[1][:-1] # 二手房数量,例如:"1234"
price = text.split()[2][:-3] # 均价,例如:"123456"
data.append([name, count, price]) # 将数据添加到列表中
最后,我们需要使用python来对数据进行清洗、处理和分析,并可视化数据(这里以绘制每个区域的二手房数量和均价的柱状图为例):
# 将数据转换为pandas的DataFrame对象,并设置列名
df = pd.DataFrame(data, columns=["name", "count", "price"])
# 将数据类型转换为数值型,并去除异常值
df["count"] = pd.to_numeric(df["count"])
df["price"] = pd.to_numeric(df["price"])
df = df[df["count"] > 0]
df = df[df["price"] > 0]
# 对数据进行排序,按照二手房数量降序排列
df = df.sort_values(by="count", ascending=False)
# 绘制柱状图,并设置标题和标签
plt.figure(figsize=(10, 6))
plt.bar(df["name"], df["count"], color="blue", label="二手房数量")
plt.twinx()
plt.plot(df["name"], df["price"], color="red", marker="o", label="均价")
plt.title("北京各区域二手房数量和均价")
plt.xlabel("区域")
plt.ylabel("二手房数量(套)")
plt.legend(loc="upper left")
plt.show()
通过上述步骤,我们就可以使用python和Selenium进行代理IP网页采集和数据分析,得到如下的结果:
从图中可以看出,北京二手房市场的供需情况和价格水平在不同的区域有着明显的差异。一般来说,二手房数量越多的区域,均价越低,反之亦然。例如,朝阳区的二手房数量最多,但是均价最低;而西城区的二手房数量最少,但是均价最高。这可能与各个区域的地理位置、人口密度、经济发展、生活质量等因素有关。
当然,这只是一个简单的示例,实际上我们还可以使用python和Selenium来抓取更多的数据,并进行更深入的分析。例如,我们可以抓取每个小区或每套房源的具体信息,并分析不同的房屋特征(如面积、楼层、朝向、装修等)对价格的影响;或者我们可以抓取不同时间段的数据,并分析价格的变化趋势和周期性;或者我们可以抓取其他城市或国家的数据,并进行比较和评价。
总之,使用python和Selenium进行代理IP网页采集和数据分析是一种非常有效和灵活的方法,它可以帮助我们从网络上获取大量的数据,并进行各种有趣和有用的分析。
推荐阅读
-
使用Python进行数据分析和自动化
-
使用 Python (9)进行数据分析--重采样和频率转换
-
使用 python 和 Selenium 进行数据分析:北京二手房价格
-
从链家网抓取北京各区二手房价格数据并进行可视化分析-使用工具
-
使用 python 对北京二手房信息进行数据分析并实现可视化
-
使用 python 和 Selenium 进行数据分析:北京二手房价格
-
使用 python 抓取和分析 Chain.com 二手房数据
-
使用 Python 对链家网站上的北京二手房进行简单数据分析
-
包婷婷 (201550484)作业一 统计软件简介与数据操作-SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件。最初软件全称为"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正在做出重大调整。为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。 1984年SPSS总部首先推出了世界上第一个统计分析软件微机版本SPSS/PC+,开创了SPSS微机系列产品的开发方向,极大地扩充了它的应用范围,并使其能很快地应用于自然科学、技术科学、社会科学的各个领域。世界上许多有影响的报刊杂志纷纷就SPSS的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价。 R统计软件介绍 R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。 与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。 该语言的语法表面上类似 C,但在语义上是函数设计语言(functional programming language)的变种并且和Lisp 以及 APL有很强的兼容性。特别的是,它允许在"语言上计算"(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。 R是一个免费的*软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R主页那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。 二、R语言 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个*、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX,Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R还有以下特点: 1.R是*软件。这意味着它是完全免费,开放源代码的。可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料。标准的安装文件身自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。[2] 2.R是一种可编程的语言。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。[2] 3. 所有R的函数和数据集是保存在程序包里面的。只有当一个包被载入时,它的内容才可以被访问。一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。在另外版安装文件中,已经包含的程序包有:base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块、survival一生存分析模块等等.[2] 4.R具有很强的互动性。除了图形输出是在另外的窗口处,它的输入输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。输出的图形可以直接保存为JPG,BMP,PNG等图片格式,还可以直接保存为PDF文件。另外,和其他编程语言和数据库之间有很好的接口。[2] 5.如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、最前沿的统计学家思维的聚集地.[2] R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。 但是请不要忘了:R是免费的(R is free)。R语言源代码托管在github,具体地址可以看参考资料。[3] 。 R语言的下载可以通过CRAN的镜像来查找。 R语言有域名为.cn的下载地址,有六个,其中两个由Datagurn,由 中国科学技术大学提供的。R语言Windows版,其中由两个下载地点是Datagurn和 USTC提供的。 三、stata Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。用Stata绘制的统计图形相当精美。 新版本的STATA采用最具亲和力的窗口接口,使用者自行建立程序时,软件能提供具有直接命令式的语法。Stata提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一万余页的出版品。 除此之外,Stata软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题与解决之道。使用者也可以透过Stata. Journal获得许许多多的相关讯息以及书籍介绍等。另外一个获取庞大资源的管道就是Statalist,它是一个独立的listserver,每月交替提供使用者超过1000个讯息以及50个程序。 四、PYTHON
-
使用 Python 对链家网站上的北京二手房进行简单数据分析