首页
学习
活动
专区
工具
TVP
发布

python之“会爬的虫子”

python爬虫之框架介绍及简单示例

众所周知python有着比较好的对于数据的的“亲和力”,是数据科学家十分喜爱的编程语言,其内置了许多其他的库,使操作起来有着诸多的便捷。

python对于数据的获取上,比如说,在网络爬虫的传统应用领域,即对于数据的抓取等方面有着许多的先天优势。

目前,比较流行的爬虫框架Scrapy,HTTP工具包urlib2,HTML解析工具beautifulsoup,XML解析器lxml,等等,都是能够独当一面的Python类库。在这里,我们简单介绍一下这其中的HTML解析工具beautifulsoup库。

为什么要选择介绍BS4呢?

首先,介绍beautifulsoup(之后均简称为BS4)的原因是,作为爬虫入门级的框架之一,它上手快捷,语句简单,思路好懂,实乃既是爬虫初学又想很快看到一些实际效果的小伙伴学习使用的必学利器。

其次,介绍BS4是由于在上个小项目中实际运用到的爬虫框架,而且实际获取到了数据,比较方便展示以及理解,所以选择了这个来做一些讲解。

Beautiful Soup是什么呀

它是一个可以从HTML或XML文件中提取数据的Python库。

它还提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。厉害吧!

就我个人理解来说,使用BS4时,你需要告诉计算机你需要从哪个网站去获取信息,(在这里需要注意,许多的网站都有反爬机制以及一些协议上的问题,这些问题的解决需要更加深度的了解以及学习,而且呢,这种东西一定是办法比困难多,只要多去了解方法一定可以获得你想获得的信息,这里示例是爬取的贝壳租房网,由于反爬做的不是很好,我们可以很简单的获取房屋信息来使用)然后根据所获取到的东西,将之做成一锅“汤”。然后呢,你想要什么东西,直接从汤里边“舀”就可以了。当然具体如何实现,由下边的代码及部分示例来看。

项目要求:获取到房源的朝向,大小,租金,名字,租赁方式及厅室情况等相关信息

图示代码将网址“https://bj.zu.ke.com/zufang”的内容获取到,包括网页源码中的全部信息(具体内容可以根据各自浏览器,使用右键单击页面的“检查”或者“查看网页源代码”看到),赋给代码中的data变量中,然后通过代码 soup = bs4.BeautifulSoup(data.text, "html.parser") 将data中信息使用 html.parser 模块处理后放到 soup中,也就是之前说过的做一锅“汤”(soup,英文“汤”)(html.parser 模块具体功能参考https://baijiahao.baidu.com/s?id=1637614366297669334&wfr=spider&for=pc 的文章,这里不做讲解)。

之后,BS4中支持将某个标签下的东西获取到,我们从实例中来看:

首先,我们在获得信息之后,由于我们不是需要全部的信息,所以,我们通常会设置一定条件,或者从一定范围内获取信息。

在这里,我们要从获得的一整篇东西里边获取的文本里边获得具体想要的东西,就会用到之前说过的标签了。我们在通过网页的检查源代码可以看到每一个房屋信息都在该标签树下。

而更加细致的也是我们需求的房屋所在地区,大小,朝向,室厅卫的信息是在该条目下的

中 如图(方框):

当然,此时如果打印出这些信息后观察会发现你通过代码获得的就是图样中的一行行信息。

此时,我们使用HouseInformation,CityInformation两个变量将该页面中的所有类似信息通过上述代码获取承接到,由于数量不止一个,所以所有获取会变为一个类型为'bs4.element.ResultSet'的变量,可以使用类似列表下标的方法来调用其中的某条来进行操作。

接下来呢,我们便可以使用正则表达式的方式,在自己转化为字符串的HouseInformation[i]中获取相关信息了,需要观察这些字符串的特点之后,按照一定的规律以及正则表达式的规则来获取相关信息,此处以以下几项为例:

那在这段代码中我们使用的操作是一定的正则表达式以及一些判断操作,以及无数据是填入“NULL”以保证数据的整齐性。所获取的写入文件,方便我们之后进行处理,文件内容如下:

总长度30条,为一个页面的房屋数量。至此,我们已经可以发现,我们已经将爬到的信息进行了简单的整理处理后放入了文件中,方便我们之后的数据处理以及记录分析,框架使用及简单实例完成。

小结:我们在使用BS4时,步骤几乎都是构建网站链接(字符串类型)-> 获取信息 -> 观察相关信息所在标签 -> 获取标签内信息 -> 处理为我们所需要的信息,而在实例中,我们并没有使用更深入的东西,感兴趣的或可以再自己寻找资源去了解学习。

你“在看”我吗?

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190920A0F5QM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券