上篇文章我们讲到python爬虫实践——零基础快速入门(三)爬取豆瓣电影

接下来我们爬取小猪短租租房信息。进入主页后选择深圳地区的位置。地址如下:
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 -*-
import requests
from lxml import etree
import timeurl3 = 'http://sz.xiaozhu.com/'
data3 = requests.get(url3).text
h = etree.HTML(data3)
titles = h.xpath('//*[@id="page_list"]/ul/li/div[2]/div/a/span/text()')
time.sleep(2)#注意,小猪在发爬虫方面做得比较好,防止被封IP就加个睡眠吧
for title in titles: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')
for div in home:title = div.xpath('./div[2]/div/a/span/text()')[0]#先找出每个房屋的所有信息,再从中找出标题

OK,完善一下代码,并运行看看:

#-*- coding:utf-8 -*-
import requests
from lxml import etree
import timeurl3 = 'http://sz.xiaozhu.com/'
data3 = requests.get(url3).text
h = etree.HTML(data3)
home = h.xpath('//*[@id="page_list"]/ul/li')
time.sleep(2)#注意,小猪在发爬虫方面做得比较好,防止被封IP就加个睡眠吧
for div in home: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

于是我们可以写出如下代码:

for div in home: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 -*-
import requests
from lxml import etree
import timeurl3 = 'http://sz.xiaozhu.com/'
data3 = requests.get(url3).text
h = etree.HTML(data3)
home = h.xpath('//*[@id="page_list"]/ul/li')
time.sleep(2)#注意,小猪在发爬虫方面做得比较好,防止被封IP就加个睡眠吧
for div in home: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后面的数字不一样而已,而且跟页码的序号一模一样,哈哈,这真是天助我也。

于是乎,加个循环我们就可以爬取多个页面的数据了。

for i in range(1,6):url3 = 'http://sz.xiaozhu.com/search-duanzufang-p{}-0/'.format(i)

来看一下爬取5个页面的代码运行结果:

#-*- coding:utf-8 -*-
import requests
from lxml import etree
import timefor i in range(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就加个睡眠吧for div in home: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,通过两个实例的练习,我相信大家已经差不多上手了,这些都是比较简单基础的东西,当然后面还会遇到比较复杂的,比如数据处理等,但是基本思路大致是相同的,大家一定要独立练习几次,多踩几次坑,不要怕遇到困难,不懂就多去练习和尝试,直到能独立写出代码为止。

其实爬虫最主要的还是细心,要多思考,相信你会有不同的收获。

python爬虫实践——零基础快速入门(四)爬取小猪租房信息相关推荐

  1. python爬虫慕课网利用xpath_python爬虫实践——零基础快速入门(二)爬取豆瓣电影...

    爬虫又称为网页蜘蛛,是一种程序或脚本. 但重点在于,它能够按照一定的规则,自动获取网页信息. 爬虫的基本原理--通用框架 1.挑选种子URL: 2.讲这些URL放入带抓取的URL列队: 3.取出带抓取 ...

  2. Python爬虫实战,requests+openpyxl模块,爬取手机商品信息数据(附源码)

    前言 今天给大家介绍的是Python爬取手机商品信息数据,在这里给需要的小伙伴们代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文本 ...

  3. python超详细零基础 bs4解析之爬取唯美图片

    文章目录 前言 前言 本篇文章主要介绍使用bs4解析来爬取某网站上的唯美高清大图,涉及到的零碎知识较多,详细易懂,适合新手小白爬虫入门. 思路如下: ①拿到主页面的源代码,然后提取到子页面的链接地址h ...

  4. python爬虫实践-01-携程酒店评论的爬取

    0 关键 携程网其最大的特点就是:基本上所有的有效数据都是通过Ajax异步请求获取的.本博客的主要内容为: 构造Ajax请求,获得返回的reviews数据,由于返回的数据为JSON格式,很好分析 判定 ...

  5. Python爬虫实战,requests+parsel模块,爬取二手房房源信息数据

    前言 最近在尝试用Python爬虫二手房房源信息数据,在这里给需要的小伙伴们提供代码,并且给出一点小心得. 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文本 ...

  6. python海龟教程_Python 零基础 快速入门 趣味教程 (咪博士 海龟绘图 turtle) 7. 条件循环...

    条件循环能够让程序在条件成立时(即为真时)重复执行循环体中的语句.如果条件一直成立(即永远不会为假),则循环会一直进行下去,不会停止.如果初始时,条件不成立,则循环 1 次也不会执行.Python 中 ...

  7. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表

    • 这是机器未来的第7篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124957520 <Python零基础快速入门 ...

  8. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典

    这是机器未来的第11篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/125038890 <Python零基础快速入门系 ...

  9. [python opencv 计算机视觉零基础到实战] 四、了解色彩空间及其详解

    一.学习目标 了解什么是色彩空间 了解opencv中色彩空间的转换 目录 [python opencv 计算机视觉零基础到实战] 一.opencv的helloworld [[python opencv ...

最新文章

  1. css中的display属性之li元素
  2. 页面上水平飞舞的图片
  3. ls –al命令来观察文件的权限,每个文件的权限都用10位表示,并分为四段!
  4. base64的c语言实现方法
  5. Acwing第 19 场周赛【完结】
  6. hash一致性算法理解
  7. c语言 文件游程统计,游程 码表 如何形成
  8. rsync配置和使用
  9. [UE4]多个Montage之间存在协作问题
  10. c语言10怎么打开文件,Lecture 10 C语言文件操作
  11. 扩展频谱--直接序列扩频
  12. 笔试 | 平安银行笔试题
  13. 删除计算机用户时拒绝访问权限,如果打印机拒绝访问并且无法删除设备怎么办...
  14. 【补遗】- OC学习小窍门及文件操作(归档)
  15. opencv实现两张图片叠加
  16. 2017年总结,2018的新目标
  17. 2021美赛C思路总结
  18. 华为mate10可以用鸿蒙吗,可升级到鸿蒙2.0的四款华为手机,在用的恭喜了
  19. lua 之 全局变量
  20. php mysql 源码_【完结】php+MySQL实战案例【九】总结及源码分享

热门文章

  1. html目录框中增加搜索引擎,网站如何添加搜索框?百度站内搜索安装技巧
  2. 用C语言实现发红包的软件算法
  3. vue实现移动端自动弹起软键盘
  4. python制作的游戏要怎么运行_练习项目19:使用python制作游戏(上) 魔力Python
  5. P1512 伊甸园日历游戏
  6. 大企业纷纷裁员,北森、宜员科技们的HR生意还好做吗?
  7. node - cheerio模块
  8. 龙芯3B1500平台,源码安装nodejs过程中失败问题
  9. Java中的升序和降序
  10. Project Euler 19 Counting Sundays( 蔡勒公式计算星期数 )