Python3爬虫实战中爬取小猪短租租房信息的案例分析
这篇文章将为大家详细讲解有关Python3爬虫实战中爬取小猪短租租房信息的案例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
本文以爬取小猪短租租房信息为例。首先进入主页后选择深圳地区的位置。地址如下:
http://sz.xiaozhu.com/
一、标题爬取
按照惯例,我们先复制标题的xpath信息,多复制几个进行对比:
//*[@id="page_list"]/ul/li[1]/div[2]/div/a/span//*[@id="page_list"]/ul/li[2]/div[2]/div/a/span//*[@id="page_list"]/ul/li[3]/div[2]/div/a/span//*[@id="page_list"]/ul/li[4]/div[2]/div/a/span#...........
对比后发现,标题只是 li[] 序号发生改变,于是我们很快写出标题的通用 xpath 信息
//*[@id="page_list"]/ul/li/div[2]/div/a/span
这是固定套路啊。于是我们先把整页的标题爬取下来:
#-*-coding:utf-8-*-importrequestsfromlxmlimportetreeimporttimeurl3='http://sz.xiaozhu.com/'data3=requests.get(url3).texth=etree.HTML(data3)titles=h.xpath('//*[@id="page_list"]/ul/li/div[2]/div/a/span/text()')time.sleep(2)#注意,小猪在发爬虫方面做得比较好,防止被封IP就加个睡眠吧fortitleintitles:print(title)
注意,注意,注意~~重要的事情要说三遍,我刚开始没有加睡眠,结果他把我IP给封了,封了,我滴妈,那我还怎么展示我的结果啊,特么都不让我访问了,呜呜,所以这里大家一定要注意,加个睡眠时间,并且这个睡眠时间稍微长一点,5s 以上应该就不会被封了吧,如果还被封,那那那~就太恶心了。
哎,说多了都是泪啊,大家一定好奇我的IP后来怎么样了?
没管,第二天解封了,哈哈哈~~~
结果展示:
毗邻海上世界交通便利无敌海景赛车公寓1号主人房|1.8米床前海园林式小区公寓【红山站】近深圳北站龙星河传奇宜家风一房一厅【平时订房租二送一】近木棉湾地铁站/整租两房CBD艺术空间大套房深圳最中心位置复式书房+独立花园阳台|前海园林式小区步行至会展中心地铁上盖阳光一居室6特价西乡地铁站/西乡天虹楼上汇一城下左罗湖文锦口岸黄贝岭新秀地铁口摩登两房整租5号飘窗次卧|前海园林式小区公寓福田CBD会展中心旁两房高尔夫球场边的家-趣园私人酒店公寓深圳湾科技园高新园地铁口万象天地极简两房一厅4西乡地铁站/西乡天虹楼上小区汇一城LifeHome生活家深圳第一最美高端民宿2西乡地铁站/西乡天虹楼上小区汇一城会展中心/福田口岸地铁口两房出差居家首选1独卫主卧西乡地铁/西乡天虹楼上小区汇一城#栖息地#罗湖口岸/东门老街地铁口/北欧一居【超暖和暖气】Loft大房近深圳北东门老街~地铁口~【清新风格】小鹿屋超低价近罗湖口岸火车站国贸东门温馨两居蛇口中心水湾地铁90平两房一低密度电梯洋房(特惠)宝安中心/地铁口/机场高层海景1居
OK,我们再选中房屋的整体信息。
整体xpath和标题xpath信息对比如下:
整体://*[@id="page_list"]/ul/li标题://*[@id="page_list"]/ul/li/div[2]/div/a/span
发现了什么?对咯,就是标题在整体的div里面去找,于是可以修改代码如下:
home=h.xpath('//*[@id="page_list"]/ul/li')fordivinhome:title=div.xpath('./div[2]/div/a/span/text()')[0]#先找出每个房屋的所有信息,再从中找出标题
OK,完善一下代码,并运行看看:
#-*-coding:utf-8-*-importrequestsfromlxmlimportetreeimporttimeurl3='http://sz.xiaozhu.com/'data3=requests.get(url3).texth=etree.HTML(data3)home=h.xpath('//*[@id="page_list"]/ul/li')time.sleep(2)#注意,小猪在发爬虫方面做得比较好,防止被封IP就加个睡眠吧fordivinhome:title=div.xpath('./div[2]/div/a/span/text()')[0]print("租房标题:",title)
结果展示:
呵呵,IP被封了展示不出来,大家自己运行看看效果
二、其他信息爬取
基本的框架搭好了,接下来我们就往框架里填充其他信息。
对比其他元素的xpath
整体://*[@id="page_list"]/ul/li标题://*[@id="page_list"]/ul/li[1]/div[2]/div/a/span价格://*[@id="page_list"]/ul/li[1]/div[2]/span[1]/i描述://*[@id="page_list"]/ul/li[1]/div[2]/div/em图片://*[@id="page_list"]/ul/li[1]/a/img
于是我们可以写出如下代码:
fordivinhome:title=div.xpath('./div[2]/div/a/span/text()')[0]#标题price=div.xpath('./div[2]/span[1]/i/text()')[0]#价格describle=div.xpath('./div[2]/div/em/text()')[0].strip()#描述photo=div.xpath('./a/img/@lazy_src/')[0]#图片
现在我们来爬取一下看看结果:
#-*-coding:utf-8-*-importrequestsfromlxmlimportetreeimporttimeurl3='http://sz.xiaozhu.com/'data3=requests.get(url3).texth=etree.HTML(data3)home=h.xpath('//*[@id="page_list"]/ul/li')time.sleep(2)#注意,小猪在发爬虫方面做得比较好,防止被封IP就加个睡眠吧fordivinhome:title=div.xpath('./div[2]/div/a/span/text()')[0]#标题price=div.xpath('./div[2]/span[1]/i/text()')[0]#价格describle=div.xpath('./div[2]/div/em/text()')[0].strip()#描述photo=div.xpath('./a/img/@lazy_src/')[0]print("{}-->{}-->{}\n{}".format(title,price,describle,photo))
结果展示:
呵呵,IP被封了展示不出来,大家自己运行看看效果
三、爬取5页数据
看一下翻页以后的url变化:
第一页:http://sz.xiaozhu.com/search-duanzufang-p1-0/第二页:http://sz.xiaozhu.com/search-duanzufang-p2-0/第三页:http://sz.xiaozhu.com/search-duanzufang-p3-0/第四页:http://sz.xiaozhu.com/search-duanzufang-p4-0/
可以发现url的变化非常规律,只是p后面的数字不一样而已,而且跟页码的序号一模一样,哈哈,这真是天助我也。
于是乎,加个循环我们就可以爬取多个页面的数据了。
foriinrange(1,6):url3='http://sz.xiaozhu.com/search-duanzufang-p{}-0/'.format(i)
来看一下爬取5个页面的代码运行结果:
#-*-coding:utf-8-*-importrequestsfromlxmlimportetreeimporttimeforiinrange(1,6):url3='http://sz.xiaozhu.com/search-duanzufang-p{}-0/'.format(i)data3=requests.get(url3).texth=etree.HTML(data3)home=h.xpath('//*[@id="page_list"]/ul/li')time.sleep(2)#注意,小猪在发爬虫方面做得比较好,防止被封IP就加个睡眠吧fordivinhome:title=div.xpath('./div[2]/div/a/span/text()')[0]#标题price=div.xpath('./div[2]/span[1]/i/text()')[0]#价格describle=div.xpath('./div[2]/div/em/text()')[0].strip()#描述photo=div.xpath('./a/img/src/')[0]time.sleep(2)print("{}-->{}-->{}\n{}".format(title,price,describle,photo))
结果展示:
龙华公园/深圳北站/清湖地铁旁温馨2居-->348-->整套出租/2室1厅/2张床/宜住4人['../images/lazy_loadimage.png']小清新复式南山中心/深圳湾口岸/南油批发城-->488-->整套出租/2室1厅/2张床/宜住4人['../images/lazy_loadimage.png']
OK,通过两个实例的练习,我相信大家已经差不多上手了,这些都是比较简单基础的东西,当然后面还会遇到比较复杂的,比如数据处理等,但是基本思路大致是相同的,大家一定要独立练习几次,多踩几次坑,不要怕遇到困难,不懂就多去练习和尝试,直到能独立写出代码为止。
关于Python3爬虫实战中爬取小猪短租租房信息的案例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。