Python爬虫入门教程03:二手房数据爬取

29 阅读5分钟

通过开发者工具可以看到,网站是静态网页数据,请求url地址是可以直接获取数据内容的。

url = 'cs.lianjia.com/ershoufang/'

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'

}

response = requests.get(url=url, headers=headers)

print(response.text)

如果你不知道,返回的数据中是否有你想要的内容,你有复制网页的内容,在pycharm的输出结果中进行搜索查看。

在这里插入图片描述

三、解析数据


既然网站是静态网页数据,那么就可以直接在开发者工具中 Elements 查看数据在哪

在这里插入图片描述

如上图所示,相关的数据内容都包含在 li 标签里面。通过 parsel 解析库,进行解析提取数据就可以了。

selector = parsel.Selector(response.text)

lis = selector.css('.sellListContent li')

for li in lis:

标题

title = li.css('.title a::text').get()

地址

positionInfo = li.css('.positionInfo a::text').getall()

小区

community = positionInfo[0]

地名

address = positionInfo[1]

房子基本信息

houseInfo = li.css('.houseInfo::text').get()

房价

Price = li.css('.totalPrice span::text').get() + '万'

单价

unitPrice = li.css('.unitPrice span::text').get().replace('单价', '')

发布信息

followInfo = li.css('.followInfo::text').get()

dit = {

'标题': title,

'小区': community,

'地名': address,

'房子基本信息': houseInfo,

'房价': Price,

'单价': unitPrice,

'发布信息': followInfo,

}

print(dit)

当我运行的时候发现报错了。

在这里插入图片描述

IndexError: list index out of range 超出索引范围了。

遇事不要慌, 取0超出索引范围,说明数据并没有取到,所以我们要看一下 <精装好房...> 这个信息下面那一个是什么情况。

在这里插入图片描述

搜索发现,这个中间插入了一条广告,也是li标签里面的,所以做一个简单的判断就好了,它是一个广告并没有标题,判断是否有标题就可以了,有就爬取相关内容,没有就pass掉。

for li in lis:

标题

title = li.css('.title a::text').get()

if title:

地址

positionInfo = li.css('.positionInfo a::text').getall()

小区

community = positionInfo[0]

地名

address = positionInfo[1]

房子基本信息

houseInfo = li.css('.houseInfo::text').get()

房价

Price = li.css('.totalPrice span::text').get() + '万'

单价

unitPrice = li.css('.unitPrice span::text').get().replace('单价', '')

发布信息

followInfo = li.css('.followInfo::text').get()

dit = {

'标题': title,

'小区': community,

'地名': address,

'房子基本信息': houseInfo,

'房价': Price,

'单价': unitPrice,

'发布信息': followInfo,

}

print(dit)

在这里插入图片描述

这样就不会报错了。

四、保存数据(数据持久化)


和爬取豆瓣的电影信息是一样的,使用csv模块,把数据保存到Excel里面

创建文件

f = open('二手房数据.csv', mode='a', encoding='utf-8', newline='')

csv_writer = csv.DictWriter(f, fieldnames=['标题', '小区', '地名', '房子基本信息',

'房价', '单价', '发布信息'])

写入表头

csv_writer.writeheader()

''''

''''

csv_writer.writerow(dit)

五、多页爬取


第二页url地址

url_2 = 'cs.lianjia.com/ershoufang/…'

第三页url地址

url_3 = 'cs.lianjia.com/ershoufang/…'

第四页url地址

url_4 = 'cs.lianjia.com/ershoufang/…'

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

了解详情:docs.qq.com/doc/DSnl3ZG…