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

news2024/9/21 7:53:39

前言

最近在尝试用Python爬虫二手房房源信息数据,在这里给需要的小伙伴们提供代码,并且给出一点小心得。

首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文本数据爬取的人会很多,所以我们需要考虑更换代理IP和随机更换请求头的方式来对房价数据进行爬取。

在每次进行爬虫代码的编写之前,我们的第一步也是最重要的一步就是分析我们的网页。

在我们本次的例子中,我们需要在每一页获取每一个具体房源的链接,然后进入到二级网页获取详细的信息,然后再返回上一级网页重复此过程。

通过分析我们发现在爬取过程中速度比较慢,所以我们还可以通过禁用谷歌浏览器图片、JavaScript等方式提升爬虫爬取速度。

开发工具

Python版本: 3.8

相关模块:

requests模块
parsel模块

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

思路分析

爬取页面如下图所示:

在这里插入图片描述

提取页面数据

浏览器中打开我们要爬取的页面
按F12进入开发者工具,查看我们想要的数据在哪里
这里我们需要房源页面数据就可以了
页面数据

代码实现

# 伪装
headers = {
    'cookie': 'aQQ_ajkguid=B7A0A0B5-30EC-7A66-7500-D8055BFFE0FA; ctid=27; id58=CpQCJ2Lbhlm+lyRwdY5QAg==; _ga=GA1.2.2086942850.1658553946; wmda_new_uuid=1; wmda_uuid=009620ee2a2138d3bd861c92362a5d28; wmda_visited_projects=%3B6289197098934; 58tj_uuid=8fd994c2-35cc-405f-b671-2c1e51aa100c; als=0; ajk-appVersion=; sessid=8D76CC93-E1C8-4792-9703-F864FF755D63; xxzl_cid=2e5a66fa054e4134a15bc3f5b47ba3ab; xzuid=e60596c8-8985-4ab3-a5df-90a202b196a3; fzq_h=4c8d83ace17a19ee94e55d91124e7439_1666957662955_85c23dcb9b084efdbc4ac519c0276b68_2936029006; fzq_js_anjuke_ershoufang_pc=75684287c0be96cac08d04f4d6cc6d09_1666957664522_25; twe=2; xxzl_cid=2e5a66fa054e4134a15bc3f5b47ba3ab; xxzl_deviceid=OOpJsA5XrQMdJFfv71dg+l+he0O1OKPQgRAQcFPbeRAyhjZ4/7gS3Gj4DfiLjxfc; isp=true; obtain_by=2; new_session=1; init_refer=https%253A%252F%252Fcs.anjuke.com%252F; new_uv=3',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
1.发送请求
response = requests.get(url=url, headers=headers)
2.获取数据
html_data = response.text
3.解析数据
 select = parsel.Selector(html_data)
    divs = select.css('.property-content')
    for div in divs:
        # .property-content-title-name   标题
        标题 = is_null(div.css('.property-content-title-name::text').get())
        # .property-content-info:nth-child(1) .property-content-info-text:nth-child(1) span  户型
        户型s = div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(1) span::text').getall()
        户型 = ' '.join(户型s)
        # .property-content-info:nth-child(1) .property-content-info-text:nth-child(2)  面积
        面积 = is_null(div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(2)::text').get())
        # .property-content-info:nth-child(1) .property-content-info-text:nth-child(3)  朝向
        朝向 = is_null(div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(3)::text').get())
        # .property-content-info:nth-child(1) .property-content-info-text:nth-child(4)  楼层
        楼层 = is_null(div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(4)::text').get())
        # .property-content-info:nth-child(1) .property-content-info-text:nth-child(5)  年份
        年份 = is_null(div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(5)::text').get())
        # .property-content-info:nth-child(2) .property-content-info-comm-name  小区名称
        小区名称 = is_null(div.css('.property-content-info:nth-child(2) .property-content-info-comm-name::text').get())
        # .property-content-info:nth-child(2) .property-content-info-comm-address  小区地址
        小区地址 = is_null(div.css('.property-content-info:nth-child(2) .property-content-info-comm-address::text').get())
        # .property-content-info:nth-child(3) span  小区标签
        小区标签s = div.css('.property-content-info:nth-child(3) span::text').getall()
        小区标签 = ' '.join(小区标签s)
        # .property-price .property-price-total .property-price-total-num  总价
        总价 = is_null(div.css('.property-price .property-price-total .property-price-total-num::text').get())
        # .property-price .property-price-average  每平方米的价格
        单价 = is_null(div.css('.property-price .property-price-average::text').get())
        print(标题, 户型, 面积, 朝向, 楼层, 年份, 小区名称, 小区地址, 小区标签, 总价, 单价)
4.保存数据
        with open('安居客.csv', mode='a', encoding='utf-8', newline='') as f:
            csv_writer = csv.writer(f)
            csv_writer.writerow([标题, 户型, 面积, 朝向, 楼层, 年份, 小区名称, 小区地址, 小区标签, 总价, 单价])

结果展示

结果
ps:图片仅供参考

最后

今天的分享到这里就结束了 ,感兴趣的朋友也可以去试试哈

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦

觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/64270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于chatGPT对有关Docker Desktop问题的一个回答

1、关于chatGPT 最近用https://github.com/Hitachi-Automotive-And-Industry-Lab/semantic-segmentation-editor的基于React的web端数据标记工具,挺好用。 但发现即便删除了container,之前标注的label都还在,觉得很奇怪,因为mon…

添加组件 页面上找一些功能组件直接用(比如layui)

layDate - JS 日期和时间选择器组件/插件 - 在线演示 - Layui 比如&#xff0c;我想添加一个日期的组件&#xff0c;我现在上面页面找 1.先找到日期与时间选择组件 2.找到你想要的组件 3.点击查看代码&#xff0c;找到组件代码的位置 在页面中添加上&#xff1a; <div cl…

你需要偷偷珍藏的java兼职平台

兼职在现在来说&#xff0c;应该不算什么非常罕见的事情。如果你感觉java技术还可以再练练手&#xff0c;或者想在闲暇的时间赚一点外快。那下面这些Java兼职平台&#xff0c;你一定要收藏。 1&#xff0c;程序员客栈 老实说&#xff0c;当时我使用这个平台&#xff0c;一个原…

vue 图片放大、缩小、旋转、滚轮操作图片放大缩小

组件 <template><!-- --><div class"imgCont"ref"imgCont"mousewheel.prevent"rollImg($event)"><div class"iconBtn"><span class"refreshBtn"><i class"el-icon-zoom-out"cl…

16S全长测序揭示绿头虻肠道微生物及共生细菌

论文题目&#xff1a;Greenhead (Tabanus nigrovittatus) Wolbachia and Its Microbiome: A Preliminary Study 期刊&#xff1a;Microbiol Spectrum 研究背景 绿头虻&#xff08;Tabanus nigrovittatus&#xff09;的雌虫刺吸牲畜的血液&#xff0c;危害家畜&#xff0c;是美…

2022年NPDP新版教材知识集锦--【第五章节】(1)

《产品经理认证(NPDP)知识体系指南(第2版)》已于2022年4月正式上架发行&#xff0c;新版教材自2022年11月NPDP考试起使用。将新版NPDP教材中的相关知识点进行了整理汇总&#xff0c;包括详细设计与规格阶段相关内容&#xff0c;快来看看吧。 【市场调研】(全部内容获取文末) 市…

基于Python实现的五子棋游戏设计(alpha-beta剪枝技术)

目录 第1章 问题描述 3 第2章 问题分析 3 第3章 算法设计 4 3.1 算法概述 4 3.2 极大极小树 4 3.3 α-β剪枝算法 5 3.3总体设计 6 3.3.1 系统流程图 7 3.3.2 基本设计 7 3.4 预处理 8 第4章 算法实现 11 4.1 估价函数 11 4.2 alpha-beta剪枝算法 15 4.2.1 算法流程图 15 4.2.2…

issac gym安装与运行 (一)

目录 1.安装 1.1 下载 ​编辑 1.2 安装 .2 初步运行 2.1 demo1 .3 官方demo 3.1 下载及安装 3.2 demo启动 3.3 加载训练好的模型 其他 References&#xff1a; nIsaac-gym(1): 安装及官方demo内容_hongliyu_lvliyu的博客-CSDN博客_isaac安装 NVIDIA Isaac Gym安装…

安卓宿舍管理系统源码

开发环境及工具&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;Android Studio 技术说明&#xff1a; springboot mybatis android 代码注释齐全&#xff0c;没有多余代码&#xff0c;适合学习&#xff08…

孤儿进程与终端的关系

孤儿进程与终端的关系 孤儿进程 在本篇文章当中主要给大家介绍一下有关孤儿进程和终端之间的关系。 首先我们的需要知道什么是孤儿进程&#xff0c;简单的来说就是当一个程序还在执行&#xff0c;但是他的父进程已经退出了&#xff0c;这种进程叫做孤儿进程&#xff0c;因为…

C#中Convert与强制转换之间的区别

Reference Source Convert与强转最大的区别是 增加了范围校验&#xff0c;如果不在范围内&#xff0c;直接抛出异常 Convert 类 (System) | Microsoft Learn 小数转化为整数 使用基本数据类型强制转化原理&#xff1a;小数转化为整数&#xff0c;舍弃小数点后的所有数字。 …

HTTP响应是什么?

文章目录HTTP响应1. 响应行2. 响应头3. 空行与响应体4. HTTP响应示例HTTP响应 当客户端发起一个请求后&#xff0c;一般都会得到一个服务器的响应&#xff0c;断网或者服务器宕机的情况下除外。服务器发送给客户端的 HTTP 响应用于向客户端提供其请求的资源&#xff0c;以及客…

开源项目-绩效管理系统

开源项目-绩效管理系统 哈喽&#xff0c;今天给大家带来一个开源系统-绩效管理系统 源码下载​​​​​​​ 系统介绍 本系统为绩效考核系统&#xff0c;系统分为三大模块&#xff1a;考核设置&#xff0c;绩效考核&#xff0c;系统管理。 可满足小企业对员工进行考核。本系…

自定义maven骨架的添加与删除——完整详细介绍

目录一、创建好自己所需的目录结构二、命令配置2.1 配置总览2.2 指令配置说明2.3 指令配置详情三、配置Idea中maven新模板3.1 找到信息文件3.2 创建实例模板四、删除自定义模板4.1 删除本地仓库中的文件4.2 删除archetype-catalog.xml文件中的配置4.3 删除idea中的配置一、创建…

傻白入门芯片设计,指令集架构、微架构、处理器内核(十一)

早期计算机出现时&#xff0c;软件的编写都是直接面向硬件系统的&#xff0c;即使是同一计算机公司的不同计算机产品&#xff0c;它们的软件都是不能通用的,这个时代的软件和硬件紧密的耦合在一起&#xff0c;不可分离。 IBM为了让自己的一系列计算机能使用相同的软件,免去重复…

毕业设计-深度学习机器视觉铝型材表面缺陷识别

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

excel表格怎么换行?单元格内换行的4个方法

今天分享一个excel单元格内换行的小技巧&#xff0c;希望对大家有用。我们在编辑excel文本时经常会遇到这样的情况&#xff1a;将文字内容用一种方式快速从中间插入。比如我们在制作表格时&#xff0c;要将区域内的数据全部合并到一张表格中&#xff08;即单元格区域&#xff0…

破茧化蝶,从Ring Bus到Mesh网络,CPU片内总线的进化之路

文章目录**为什么需要片内总线&#xff1f;****星型连接****环形总线&#xff08;Ring Bus&#xff09;****Mesh网络****结论**转载于&#xff1a;https://zhuanlan.zhihu.com/p/32216294 在大多数普通用户眼里&#xff0c;CPU也许就是一块顶着铁盖子的电路板而已。但是如果我…

【基于Tansformer的融合方法:感知损失:传递-感知损失】

HyperTransformer: A Textural and Spectral Feature Fusion Transformer for Pansharpening &#xff08;超级Transformer&#xff1a;一种用于全色锐化的纹理和光谱特征融合Transformer&#xff09; 先看这一篇简单了解Transformer &#xff08;是一篇高光谱图像融合&#x…

[附源码]计算机毕业设计JAVA疫情背景下叮当买菜管理系统

[附源码]计算机毕业设计JAVA疫情背景下叮当买菜管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; S…