爬虫项目二十:用Python对58租房信息进行爬取

2023-11-15


前言

用Python爬下58同城租房详情信息 (仅供学习使用,已发现弊端 封IP严重)


提示:以下是本篇文章正文内容,下面案例可供参考

一、分析url

第一页:https://bj.58.com/chuzu/?PGTID=0d000000-0000-0116-5fa7-7c361aef2ca6&ClickID=1
第二页:https://bj.58.com/chuzu/pn2/?PGTID=0d3090a7-0000-1606-2950-91e1fdc3a82a&ClickID=2

删除无用参数修改后:
https://城市首字母.58.com/chuzu/pn页数/

二、制造url

上面我们已经知道了url的组成规律,我们就可以批量生成url

实例代码如下:

def City_Urls(self):
    urls=[]
    keyword=input("请输入城市首字母:")
    start_page=input("请输入起始页数:")
    end_page=input("请输入结束页数:")
    for i in range(int(start_page),int(end_page)+1):
        url="https://%s.58.com/chuzu/pn%d/"%(keyword,i)
        urls.append(url)
    return urls

三、详情url

我们的目的是通过列表页面获取详情页url进入详情页面获取数据,所以在我们已经获取了列表页url后就该获取每个房源的详情页url,我们在浏览器上右键检查元素,定位每个房源标题可看到详情url

在这里插入图片描述
根据上面我们便可以写代码获取每个房源的详情页url

实例代码如下:

def Get_Detail_Link(self,url):
    text=requests.get(url=url).text
    html=etree.HTML(text)
    detail_urls=html.xpath('//ul[@class="house-list"]/li/div[@class="des"]/h2[1]/a[1]/@href')
    self.detail_list.extend(detail_urls)

四、解析页面

有了详情页的url我们便可以通过解析数据 保存数据,我们要获取的数据是下图中的一些数据

在这里插入图片描述
关于这些元素信息的获取,用re也好、XPath也可 不管用什么方法 获取到数据就行,我用的是XPath,步骤不详写,直接看代码

实例代码如下:

def Parser_Data(self,detail_url):
    dic={}
    text=requests.get(url=detail_url,headers=self.header).text
    html=etree.HTML(text)
    try:
        dic["house-title"]=html.xpath('//div[@class="house-title"]/h1[1]/text()')[0]
    except:
        dic["house-title"]=""
    try:
        dic["time"]="".join(html.xpath('//div[@class="house-title"]/p[@class="house-update-info c_888 f12"]//text()')).replace("\n","").replace("\xa0","")
    except:
        dic["time"] =""
    try:
        dic["price"]="".join(html.xpath('//div[@class="house-pay-way f16"]/span[1]//text()')).replace("\n","").replace("\xa0","")
    except:
        dic["price"] = ""
    try:
        dic["instructions1"]=html.xpath('//div[@class="house-pay-way f16"]/span[2]/text()')[0]
    except:
        dic["instructions1"] =""
    try:
        dic["instructions2"] = html.xpath('//div[@class="house-pay-way f16"]/span[last()]/text()')[0]
    except:
        dic["instructions2"] =""
    with open(".//house.csv", "a", encoding="utf-8") as f:
        writer = csv.DictWriter(f, dic.keys())
        writer.writerow(dic)

总结

这次爬虫,通过找到列表页的url规律批量生成列表页url,通过列表页url 获取详情页url,以此获取数据

如果你对爬虫感兴趣,欢迎到我主页浏览,现已经更新多个爬虫项目,所以源码均在公众号“阿虚学Python”中,本篇文章源码,回复“58租房”获取
在这里插入图片描述
谢谢大家的观看,如果觉得不错就点个赞吧,你的赞是对原创博主最大的支持

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

爬虫项目二十:用Python对58租房信息进行爬取 的相关文章

随机推荐

  • HighChar 详解-双Y轴-及各

    网上的例子 数据都是写死的 有点不实用吧 我在这里举一个 展示功能需求的数据 按需从数据库获取并画图展示 本例子结合 angular js 其他前台框架同理 从后台获取数据即可 1 首先要引入Jquery JS 再引入相关highChar
  • 上升子序列用C语言编写,最长上升子序列(C语言 动态规划)

    描述 一个数的序列bi 当b1 lt b2 lt lt bS的时候 我们称这个序列是上升的 对于给定的一个序列 a1 a2 aN 我们可以得到一些上升的子序列 ai1 ai2 aiK 这里1 i1 lt i2 lt lt iK N 比如 对
  • 在html中写的css没效果,css样式不起作用是什么原因?

    在写页面时 有时会发现自己写的css样式无法生效 我们该如何排查css样式无法生效 常见的css样式不起作用的原因有哪些呢 下面我们就来看一下css样式不起作用的原因 排查css样式不起作用的方法步骤 首先 先试一下清除缓存 重启浏览器等手
  • 用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名

    生活中有很多场景都需要我们签字 签名 如果是一些不重要的场景 我们的签名好坏基本无所谓了 但如果是一些比较重要的场景 如果我们的签名比较差的话 就有可能给别人留下不太好的印象了 俗话说字如其人嘛 本文我们使用 Python 来制作一个艺术签
  • 逐行扫描型Memory LCD显存管理与emWin移植

    因为Memory LCD 的特性 不能设置像素坐标 只能用缓存整体刷新 所以对于Memory LCD来说 emWin移植仅与打点函数有关 这里用Sharp Memory LCD ls013b7dh03 作为实例 LCD的显存 逐行扫描 存放
  • 缓存记录

    1 我们在项目中使用缓存通常都是先检查缓存中是否存在 如果存在直接返回缓存内容 如果不存在就直接查询数据库然后再缓存查询结果返回 这个时候如果我们查询的某一个数据在缓存中一直不存在 就会造成每一次请求都查询DB 这样缓存就失去了意义 在流量
  • 简述锂离子电池的分类及结构

    锂离子电池按所用电解质材料的不同 可分为液态锂离子电池 LIB 和聚合物锂离子电池 PLB 两类 锂电池按工作环境分 高温锂离子电池 低温锂离子电池 常温锂离子电池 按电解质状态分 液态锂离子电池 凝胶锂离子电池固态锂离子电池 按形状分 方
  • uniapp实现横向滚动

  • 【软考】【系统架构设计师】决策论知识点

    1 概念 决策 一词来源于英语Decision Analysis 直译为 做出决定 所谓决策 就是为了实现预定的目标在若干可供选择的方案中 选出一个最佳行动方案的过程 它是一门帮助人们科学地决策的理论 也是管理者识别并解决问题及利用机会的过
  • SQLMAP脚本-sql-labs-Less-26-27a

    testtest sqli labs less 26 and less 26a 观察后端代码 发现空格 or and以及注释符 和 都没了 or and用双写 注释使用 00 空格用 09 0A 0B 0D 20 编写sqlmap脚本命名为
  • PHP运行模式

    PHP运行模式有4钟 1 cgi 通用网关接口 Common Gateway Interface 2 fast cgi 常驻 long live 型的 CGI 3 cli 命令行运行 Command Line Interface 4 web
  • centOS7 安装docker

    centOS7 安装docker centOS7 先更新yum 更新yum sudo yum update 下载必须 yum utils device mapper persistent data lvm2 sudo yum install
  • 本地Docker镜像发布到阿里云的Docker Hub

    1 配置镜像加速器 参考https my oschina net u 182501 blog 1549194 2 命名空间管理 进入https cr console aliyun com namespace index 3 创建镜像仓库 h
  • Java源文件注释

    关于java源程序当中的注释 什么是注释 注释的作用是什么 出现在java的源程序当中 对java源代码的解释说明 注释不会被编译到 class字节码文件当中 一个好的开发习惯应该是多编写注释 这样程序的可读性比较强 java中的注释怎么写
  • C++ 多态 超详细讲解

    文章目录 多态概念引入 1 C 中多态的实现 1 1 多态的构成条件 1 2 虚函数 1 3虚函数的重写 1 4 C 11 override final 1 5 重载 覆盖 重写 重定义 隐藏 2 抽象类 2 1 抽象类的概念 2 2 接口
  • MySQL第四讲 MySql Undo日志 - 对聚簇索引进行CUD操作

    事务需要保证原子性 如果在事务执行过程中出现以下情况 就需要用到undo log 1 事务执行中遇到各种错误 比如服务器本身的错误 操作系统错误甚至是断电导致的错误 2 事务在执行过程手动rollback结束当前事务 每当对一条记录进行改动
  • STM32 定时器中断

    通用定时器工作过程 时钟选择 计数器时钟可以由下列时钟源提供 内部时钟 CK INT 外部时钟模式1 外部输入脚 TIx 外部时钟模式2 外部触发输入 ETR 内部触发输入 ITRx 使用一个定时器作为另一个定时器的预分频器 如可以配置一个
  • 环形队列原理,全网最通俗易懂

    队列是什么 队列是一种很常见的数据结构 满足先进先出的方式 如果我们设定队列的最大长度 那就意味着进队列和出队列的元素的数量实则满足一种动态平衡 如果我们把首次添加入队列的元素作为一个一维坐标的原点 那么随着队列中元素的添加 坐标原点到队尾
  • 六一儿童节 全网最全的微服务+Outh2套餐,你确定不来试一试?(入门到精通,附源码)满足你的味蕾需要(二)

    咱们废话不多说 直接开干 目录 一 项目目录 二 Token 三 授权服务器oauth 1 pom 2 application 3 OauthApp启动类 4 DiyUserDetails 5 MyUserDetailService 6 K
  • 爬虫项目二十:用Python对58租房信息进行爬取

    文章目录 前言 一 分析url 二 制造url 三 详情url 四 解析页面 总结 前言 用Python爬下58同城租房详情信息 仅供学习使用 已发现弊端 封IP严重 提示 以下是本篇文章正文内容 下面案例可供参考 一 分析url 第一页