人生苦短,我用 Python

前文传送门:

小白学 Python 爬虫(1):开篇

小白学 Python 爬虫(2):前置准备(一)基本类库的安装

小白学 Python 爬虫(3):前置准备(二)Linux基础入门

小白学 Python 爬虫(4):前置准备(三)Docker基础入门

小白学 Python 爬虫(5):前置准备(四)数据库基础

小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装

小白学 Python 爬虫(7):HTTP 基础

小白学 Python 爬虫(8):网页基础

小白学 Python 爬虫(9):爬虫基础

小白学 Python 爬虫(10):Session 和 Cookies

小白学 Python 爬虫(11):urllib 基础使用(一)

小白学 Python 爬虫(12):urllib 基础使用(二)

小白学 Python 爬虫(13):urllib 基础使用(三)

小白学 Python 爬虫(14):urllib 基础使用(四)

小白学 Python 爬虫(15):urllib 基础使用(五)

小白学 Python 爬虫(16):urllib 实战之爬取妹子图

小白学 Python 爬虫(17):Requests 基础使用

小白学 Python 爬虫(18):Requests 进阶操作

小白学 Python 爬虫(19):Xpath 基操

小白学 Python 爬虫(20):Xpath 进阶

小白学 Python 爬虫(21):解析库 Beautiful Soup(上)

小白学 Python 爬虫(22):解析库 Beautiful Soup(下)

小白学 Python 爬虫(23):解析库 pyquery 入门

小白学 Python 爬虫(24):2019 豆瓣电影排行

小白学 Python 爬虫(25):爬取股票信息

引言

看到题目肯定有同学会问,为啥不包含新房,emmmmmmmmmmm

说出来都是血泪史啊。。。

小编已经哭晕在厕所,那位同学赶紧醒醒,太阳还没下山呢。

别看不起二手房,说的好像大家都买得起一样。

分析

淡不多扯,先进入正题,目标页面的链接小编已经找好了:https://sh.lianjia.com/ershoufang/pg1/ 。

房源数量还是蛮多的么,今年正题房产行业不景气,据说 房价都不高。

小编其实是有目的的,毕竟也来上海五年多了,万一真的爬出来的数据看到有合适,对吧,顺便也能帮大家探个路。

首先还是分析页面的链接信息,其实已经很明显了,在链接最后一栏有一个 pg1 ,小编猜应该是 page1 的意思,不信换成 pg2 试试看,很显然的么。

随便打开一个房屋页面进到内层页面,看下数据:

数据还是很全面的嘛,那详细数据就从这里取了。

顺便再看下详情页的链接:https://sh.lianjia.com/ershoufang/107102012982.html 。

这个编号从哪里来?

小编敢保证在外层列表页的 DOM 结构里肯定能找到。

这就叫老司机的直觉,秀不秀就完了。

撸代码

思想还是老思想,先将外层列表页的数据构建一个列表,然后通过循环那个列表爬取详情页,将获取到的数据写入 Mysql 中。

本篇所使用到的请求库和解析库还是 Requests 和 pyquery 。

别问为啥,问就是小编喜欢。

因为简单。

还是先定义一个爬取外层房源列表的方法:

def get_outer_list(maxNum):list = []for i in range(1, maxNum + 1):url = 'https://sh.lianjia.com/ershoufang/pg' + str(i)print('正在爬取的链接为: %s' %url)response = requests.get(url, headers=headers)print('正在获取第 %d 页房源' % i)doc = PyQuery(response.text)num = 0for item in doc('.sellListContent li').items():num += 1list.append(item.attr('data-lj_action_housedel_id'))print('当前页面房源共 %d 套' %num)return list

这里先获取房源的那个 id 编号列表,方便我们下一步进行连接的拼接,这里的传入参数是最大页数,只要不超过实际页数即可,目前最大页数是 100 页,这里最大也只能传入 100 。

房源列表获取到以后,接着就是要获取房源的详细信息,这次的信息量有点大,解析起来稍有费劲儿:

def get_inner_info(list):for i in list:try:response = requests.get('https://sh.lianjia.com/ershoufang/' + str(i) + '.html', headers=headers)doc = PyQuery(response.text)# 基本属性解析base_li_item = doc('.base .content ul li').remove('.label').items()base_li_list = []for item in base_li_item:base_li_list.append(item.text())# 交易属性解析transaction_li_item = doc('.transaction .content ul li').items()transaction_li_list = []for item in transaction_li_item:transaction_li_list.append(item.children().not_('.label').text())insert_data = {"id": i,"danjia": doc('.unitPriceValue').remove('i').text(),"zongjia": doc('.price .total').text() + '万',"quyu": doc('.areaName .info').text(),"xiaoqu": doc('.communityName .info').text(),"huxing": base_li_list[0],"louceng": base_li_list[1],"jianmian": base_li_list[2],"jiegou": base_li_list[3],"taoneimianji": base_li_list[4],"jianzhuleixing": base_li_list[5],"chaoxiang": base_li_list[6],"jianzhujiegou": base_li_list[7],"zhuangxiu": base_li_list[8],"tihubili": base_li_list[9],"dianti": base_li_list[10],"chanquan": base_li_list[11],"guapaishijian": transaction_li_list[0],"jiaoyiquanshu": transaction_li_list[1],"shangcijiaoyi": transaction_li_list[2],"fangwuyongtu": transaction_li_list[3],"fangwunianxian": transaction_li_list[4],"chanquansuoshu": transaction_li_list[5],"diyaxinxi": transaction_li_list[6]}cursor.execute(sql_insert, insert_data)conn.commit()print(i, ':写入完成')except:print(i, ':写入异常')continue

两个最关键的方法已经写完了,接下来看下小编的成果:

这个价格看的小编血压有点高。

果然还是我大魔都,不管几手房,价格看看就好。

小结

从结果可以看出来,链家虽然是说的有 6W 多套房子,实际上我们从页面上可以爬取到的拢共也就只有 3000 套,远没有达到我们想要的所有的数据。但是小编增加筛选条件,房源总数确实也是会变动的,应该是做了强限制,最多只能展示 100 页的数据,防止数据被完全爬走。

套路还是很深的,只要不把数据放出来,泥萌就不要想能爬到我的数据。对于一般用户而言,能看到前面的一些数据也足够了,估计也没几个人会翻到最后几页去看数据。

本篇的代码就到这里了,如果有需要获取全部代码的,可以访问代码仓库获取。

示例代码

本系列的所有代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便大家取用。

示例代码-Github

示例代码-Gitee

小白学 Python 爬虫(26):为啥上海二手房你都买不起相关推荐

  1. python 爬虫框架_小白学 Python 爬虫(28):自动化测试框架 Selenium (下)

    人生苦短,我用 Python 如果我的文章对您有帮助,请关注支持下作者的公众号:极客挖掘机,您的关注,是对小编坚持原创的最大鼓励:) 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Py ...

  2. 小白学vb还是python_小白学 Python 爬虫(30):代理基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  3. 小白学 Python 爬虫(27):自动化测试框架 Selenium 从入门到放弃(上)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  4. 小白学 Python 爬虫(30):代理基础

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  5. 小白学 Python 爬虫(42):春节去哪里玩(系列终篇)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  6. 小白学 Python 爬虫(28):自动化测试框架 Selenium 从入门到放弃(下)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  7. python爬虫 小白轻松从0到1_小白学 Python 爬虫(1):开篇

    人生苦短,我用 Python 引言 各位同学大家好,好久不见(可能只有一两天没见:囧)~~~ 先讲一件事情,昨天为啥没更新. emmmmmmmmm,当然是因为加班啦,快到年底了,公司项目比较忙,最近的 ...

  8. python 使用socks 爬虫_小白学 Python 爬虫(17):Requests 基础使用

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  9. python requests_小白学 Python 爬虫(18):Requests 进阶操作

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

最新文章

  1. Linux1:Linux概述
  2. IOS代码实现常用控件UIButton、UISlider、UISwitch、UISegmentedControl
  3. 看透 Spring MVC 源代码分析与实践 —— 俯视 Spring MVC
  4. 【资源】媲美搜索神器everything,超过1秒出结果算我输!
  5. HTML5_1 笔记
  6. 原生js实现京东商城楼梯效果
  7. 解释spring,struts,hibernate优缺点
  8. linux-2.6.38 input子系统(用输入子系统实现按键操作)
  9. 计算机普通用户没有软件怎么回事,请教各位高手:单机多用户账户计算机,当管理员用户安装了程序,其它普通用户账户不能使用怎么处理?比如在管理...
  10. 药易通采购过账存储过程ts_c_BillAudit 分析
  11. 读书笔记《你真的理解什么是财富自由吗?》
  12. VSCode 新版 HTML文件 英文感叹号 + Tab 没有出现模板 解决方法
  13. mysql hugepage_huge page 能给MySQL 带来性能提升吗?
  14. 16、Mip-NeRF360
  15. C++函数参数省略号
  16. Android平台上的PacketSender
  17. 运行Ubuntu的HP笔记本合上盖子不休眠也不断网
  18. ESXI6.7.0 升级到7.0U3f(2022年7月12 更新)
  19. Android 8.1 DisplayPowerController(五) 自动调节亮度(2)——算法
  20. 逍遥书生服务器啥时候维护完毕,《逍遥西游2》12月8日服务器维护公告

热门文章

  1. 仿造虎扑步行街首页。
  2. java-IO流(4)-对象流及其序列化介绍
  3. rk3288 调试dvp摄像头_RK3288 uvc摄像头调试
  4. 再谈多态——向上映射及VMT/DMT
  5. 从MPU6050了解姿态解算
  6. 在线png转换成jpg、jpg转png、各种转
  7. C# SolidWorks 二次开发 API --- 2018版 中文翻译 之官方示例
  8. 如何进行用户留存分析
  9. SQLServer 自定义函数 日期计算月初/月末/年初/年末/季初/季末
  10. unittest教程(2w字实例合集)——Python自动化测试一文入门