这几步让你轻松用Python实现Web抓取!

点击上方关注,All in AI中国

作者:Ann Mohan Kunnath

因特网上有许多非结构化数据。一旦收集并转换成结构化、有意义的格式,这些数据就可以用来执行分析并获得富有成效的见解。在本教程中,我将演示如何从因特网上收集这些数据,并对其进行处理,以使其具有结构化的格式。这个过程被称为网页抓取。它也被称为屏幕抓取、网页获取或网页数据提取。

这几步让你轻松用Python实现Web抓取!

网页抓取在商业中有很多应用。市场情绪分析、客户情绪分析和竞争定价是其中的几个例子。

在这篇文章中,我将演示如何使用Python在web上抓取partments.com。

步骤1:在对一个网站进行抓取之前,我们需要看看他们的robots.txt。

因为这个文件会告诉我们网站是允许抓取还是不允许抓取。我们要做的就是找到robots.txt,输入基本url并添加"/robots.txt"。例如,如果我们想爬partments.com,我们要输入https:/www.partments.com/robots.txt。

如果robots.txt允许完全访问,则如下所示:

用户代理:*

不允许:

如果robots.txt阻止所有访问,则包含以下内容:

用户代理:*

不允许:/

如果robots.txt允许部分访问,则包含以下内容,其中section表示不需要爬行的部分:

用户代理:*

不允许:/section/

就partments.com而言,robots.txt包含以下内容:

这几步让你轻松用Python实现Web抓取!

上图意味着我们可以抓取站点上的所有部分,除了在url中标有partments.com/services/的部分。

步骤2:导入必要的库:

这几步让你轻松用Python实现Web抓取!

在本例中,Requests库用于获取html内容,BeautifulSoup用于解析html,pandas用于创建数据帧(dataframe)并写入csv。

步骤3:将所抓取变量的url存储起来。

在本例中,我转到partments.com网站,在搜索框中输入辛辛那提(Cincinnati),然后按回车键,得到的东西如下面的屏幕截图所示。

这几步让你轻松用Python实现Web抓取!

这使我的url改为https:/www.partments.com/Cincinnati-oh/ 如下面的截图所示,这将是我的默认地(网)址。

这几步让你轻松用Python实现Web抓取!

这几步让你轻松用Python实现Web抓取!

步骤4:从页面中获取html内容。这里需要使用requests库完成。

这几步让你轻松用Python实现Web抓取!

步骤5:解析html。这里需要应用到BeautifulSoup。

这几步让你轻松用Python实现Web抓取!

步骤6:提取页面第一页和最后一页的页码。这样做对我们而言非常重要,可以方便我们在网站上的页面上动态爬行。在这里所要做的只是单击页面末尾的分页部分,如下面的图片所示,右键单击inspect。

这几步让你轻松用Python实现Web抓取!

在单击inspect时,我们可以看到页码位于div id"分页"内,而它又位于div id"placardContainer"内,如下所示。

这几步让你轻松用Python实现Web抓取!

下面的代码是使用了这些标记来提取起始页码和结束页码的。

这几步让你轻松用Python实现Web抓取!

步骤7:创建一个空列表来补充我们稍后获得的所有内容。

这几步让你轻松用Python实现Web抓取!

步骤8:从页码中创建页面链接,在页面中爬行并从相应的标记中提取内容。我们通过for循环确保爬行过每个页面。

这几步让你轻松用Python实现Web抓取!

这几步让你轻松用Python实现Web抓取!

步骤9:对网页中(所出租房屋的)名字和位置这些主要信息进行抓取。右键单击名字这一栏进行检查。在下面的(代码)截图中,我们可以看到,在所有权方面"辛辛那提的威廉斯堡"属于"placardHeader"这一类,位置信息位于代码中表示名字的下方。稍后我们将使用蓝色矩形中所标记的代码来提取它们具体的信息。

这几步让你轻松用Python实现Web抓取!

这几步让你轻松用Python实现Web抓取!

步骤10:我们现在要对是否已出租给他人,有几张床和联系电话这些次要信息进行提取。通过对相关代码的检查,我们可以看到它们都属于次要信息"placardContent"下,如下面的截图所示。稍后我们将使用蓝色矩形中所标记的代码来提取它们具体的信息。

这几步让你轻松用Python实现Web抓取!

这几步让你轻松用Python实现Web抓取!

步骤11:启动for循环(循环从所有权开始,当再循环到所有权时结束),并对名字、地址、价格、有几张床和联系电话这些有价值的信息进行提取。我们通过之前对这些值做出的标记来提取它们的信息。在步骤9和步骤10的截图中,这些信息都通过蓝色矩形框所标出。

这几步让你轻松用Python实现Web抓取!

这几步让你轻松用Python实现Web抓取!

这几步让你轻松用Python实现Web抓取!

这几步让你轻松用Python实现Web抓取!

这几步让你轻松用Python实现Web抓取!

步骤12:使用该列表创建一个数据文件,并将该列表写入CSV文件

这几步让你轻松用Python实现Web抓取!

步骤13:现在,我们可以在工作目录中找到Output.csv文件,它将以结构化的方式获得所有信息。下面是CSV前5行的截图。

这几步让你轻松用Python实现Web抓取!

做完了!意犹未尽的你请点:

https://github.com/annmohankunnath/Webscraping/blob/master/Webscraping.ipynb

这几步让你轻松用Python实现Web抓取!


分享到:


相關文章: