爬虫笔记(二):实战58二手房

第一:给大家推荐一个爬虫的网课哈,码起来
第二:今夜主题:通过xpath爬取58二手房的title信息,也就是标红的位置~
在这里插入图片描述
第三:先分析一波title所在的位置

  • 打开按下f12打开抓包工具,即可看到网站的源码,逐步定位至房子信息的部分
    在这里插入图片描述
  • 我们以第一个房子信息为例,找到它的title位置,最终发现它在<h3>这个位置~
    在这里插入图片描述
  • 目前,我们就需要在网页的源码上获取到<section class="list">下的<h3>里的文本信息

第四:想要获取某个标签下的文本信息或是属性信息,我们就要借助xpath啦,当然在网课里,老师讲了用正则表达式或bs4也可以,但是由于时间有限,我就直接学xpath
至于xpath是啥呢,简而言之,就是在网页的源码中定位至某一标签,并且获取标签内容或是属性的解析工具

# 使用xpath,首先,需要安装lxml的包
from lxml import etree# 第二,实例化etree对象
# 2.1 解析本地的html文件
page_etree = etree.parse('本地html地址')
# 2.2 直接加载网页的源码
page_etree = etree.HTML(page_text)
# 通过xpath表达式定位至某一标签,当然获得是列表哈
list = page_etree.xpath('xpath表达式')

至于xpath表达式怎么码嘞,记住以下几点~
咱们以下面这个html->head标签下的title为例
在这里插入图片描述

# 通过/html/head/title可以逐步定位至<html><head><title></title></head></html>的位置,而/text()则可以获取title标签内的文本内容
list = page_etree.xpath('/html/head/title/text()')
print(list)# 但是如果这样逐步定位,实在太麻烦了
# 比如说咱们现在需要定位的房子信息的title,需要写好多级的section和div,总不能一个个数叭
# 通过"//"就搞定啦,"//"就可以直接跨越多个标签层级,直接定位到符合条件的那一个标签啦
list = page_etree.xpath('//title/text()')
print(list)

如果说,有多个title例如下面这个情况,但是我们只想获得特定的title的内容,只需要加入class即可

<html><head><title class="t1">xxxxxxx</title><title class="t2">xxxxxxx</title><title class="t3">xxxxxxx</title></head>
</html>
# 这样就可以获取<title class="t3">xxxxxxx</title>里的文本内容啦
list = page_etree.xpath('//title[@class="t2"]/text()')

那如果要获取某一标签内的属性,例如说<a href="网站链接" />中的链接怎么办嘞,以咱们房子信息中的这个<a>标签为例哈
在这里插入图片描述

# 这里可以注意两处用了"//"的地方
list = page_etree.xpath('//section[@class="list"]//a/@href')

第五:开码,码完就睡

import requests
from lxml import etreeif __name__ == "__main__":headers = {'User-Agent': 'xxxxx',}url = 'https://bj.58.com/ershoufang/'# 发送get请求page_text = requests.get(url=url, headers=headers).text# 实例化对象page_etree = etree.HTML(page_text)# 根据xpath表达式获取信息# 注意这里获取的是这个房子一整个信息的div标签,其中包含左侧的房子图片,title和详细信息及价钱list = page_etree.xpath('//section[@class="list"]/div')f = open('page/58_1.txt', 'w', encoding='utf-8')for item in list:# 在这里,将div标签中的title标签抽出来,保存在txt文件里就完事啦# 因为xpath获取的结果是一个列表,所以需要在后面加上索引[0]title = item.xpath('./a/div[@class="property-content"]/div/div/h3/text()')[0]f.write(title + '\n')

一开始,我为了方便,也采用了下面这个写法

    # 在section标签下直接获取h3标签下的内容,貌似也行~list = page_etree.xpath('//section[@class="list"]//h3/text()')f = open('page/58.txt', 'w', encoding='utf-8')for item in list:f.write(item + '\n')

注意:如果返回的结果为空,回到58二手房的页面刷新一下,点击按钮验证一下即可

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

burp靶场--WebSockets安全漏洞

burp靶场–WebSockets安全漏洞 https://portswigger.net/web-security/websockets/what-are-websockets ### 什么是 WebSocket&#xff1f; WebSocket是一种通过 HTTP 发起的双向、全双工通信协议。它们通常在现代 Web 应用程序中用于流数据和其他异步流量。 在本节中&#x…

开始读 Oracle PL/SQL Programming 第6版

最近觉得PL/SQL越来越重要&#xff0c;因为这本书早就在待读列表中&#xff0c;因此决定系统的学一下。 2024年1月24日晚开始读。 在亚马逊上的评价还不错&#xff1a; 本书的第一作者是Steven Feuerstein&#xff0c;是Oracle资深的Developer Advocate。 本书的示例代码可…

「一本通 3.6 例 1」分离的路径

题目描述 为了从 F F F 个草场中的一个走到另一个&#xff0c;贝茜和她的同伴们不得不路过一些她们讨厌的可怕的树。奶牛们已经厌倦了被迫走某一条路&#xff0c;所以她们想建一些新路&#xff0c;使每一对草场之间都会至少有两条相互分离的路径&#xff0c;这样她们就有多一…

工程项目管理软件系统

工程项目管理软件系统单机版永久免费使用&#xff0c;无录入数量限制&#xff0c;无打印限制&#xff0c;无时间限制 1、产品概述 专业项目管理软件,业务流程清晰&#xff0c;操作简单&#xff0c;软件速度快; 围绕项目的(任务、进度、出库、入库、借用、人工、合同等)进行管理…

Zookeeper架构系列——集群模式

背景 架构图 集群模式详解 客户端连接到单个ZooKeeper服务器。客户端维护一个TCP连接&#xff0c;通过该连接发送请求、获取响应、获取监视事件和发送检测信号。如果与服务器的TCP连接中断&#xff0c;客户端将连接到其他服务器。 订购了ZooKeeper。ZooKeeper在每次更新时都…

数学建模常见算法的通俗理解(3)

11 Logistic模型&#xff08;计算是/否的概率&#xff09; 11.1 粗浅理解 我们有m张图片&#xff0c;并且获取了这些图片的特征向量的矩阵&#xff0c;我们需要判断这些图片中是否满足我们某个要求&#xff0c;如是否含有猫&#x1f431;这种动物。那么此时我们的每张图片传…

[HTML]Web前端开发技术12(HTML5、CSS3、JavaScript )——喵喵画网页

希望你开心&#xff0c;希望你健康&#xff0c;希望你幸福&#xff0c;希望你点赞&#xff01; 最后的最后&#xff0c;关注喵&#xff0c;关注喵&#xff0c;关注喵&#xff0c;佬佬会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的…

Word中插入公式并引用

1、如何插入公式 在word中,键入快捷键 “alt” + “=”,即可快速插入一个公式,并立即编辑。 2、利用表格框住公式 新建一个 1 行 3 列的表格,总宽度为页面宽度,第一个单元格和最后一个单元格都保持在 2.25cm,中间尽可能长。我设置的这个数值比较合理。 记住,要把表格…

ChromeDriver谷歌驱动最新版安装120/121/122

chromeDriver最新版本下载 最新驱动 https://googlechromelabs.github.io/chrome-for-testing/参考&#xff1a; https://blog.csdn.net/m0_57382185/article/details/134007615

【STM32】STM32学习笔记-W25Q64简介(37)

00. 目录 文章目录 00. 目录01. SPI简介02. W25Q64简介03. 硬件电路04. W25Q64框图05. Flash操作注意事项06. 预留07. 附录 01. SPI简介 在大容量产品和互联型产品上&#xff0c;SPI接口可以配置为支持SPI协议或者支持I 2 S音频协议。SPI接口默认工作在SPI方式&#xff0c;可以…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 1月25日,星期四

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年1月25日 星期四 农历腊月十五 1、 央行&#xff1a;2月5日下调存款准备金率0.5个百分点&#xff0c;1月25日下调支农支小再贷款、再贴现利率0.25个百分点&#xff0c;将向市场提供长期流动性1万亿元。 2、 人社部&#xf…

【教程】如何在苹果手机上查看系统文件?

​ 目录 引言 用户登录工具和连接设备 查看设备信息&#xff0c;电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 电脑可对手机应用程序批量操作 运行APP和查看APP日志 IPA包安装测试 注意事项 引言 苹果手机与安卓手机不同&#xff0c;无法直接访问系统文件…

LabVIEW扫描探针显微镜系统开发

在纳米技术对高精度材料特性测量的需求日益增长。介绍了基于LabVIEW开发的扫描探针显微镜&#xff08;SPM&#xff09;系统。该系统不仅可以高效地测量材料的热物性&#xff0c;还能在纳米尺度上探究热电性质&#xff0c;为材料研究提供了强大的工具。 系统基于扫描探针显微技…

selenium执行出现异常,SessionNotCreatedException ChromeDriver only supports

问题现状&#xff1a; 运行程序报错&#xff1a; selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 114 Current browser version is 121.0.6167.85 with binary path /App…

Android Studio 提示Use app:drawableStartCompat instead of android:drawableStart

每次提交代码时&#xff0c;AS这个老妈子总爱唠叨一堆warning&#xff0c;这些Warning都在讲什么&#xff1f; 1.Use app:drawableStartCompat instead of android:drawableStart 在Android开发中&#xff0c;android:drawableStart和app:drawableStartCompat是两个用于设置…

【数学建模】综合评价方法

文章目录 综合评价的基本理论和数据预处理综合评价的基本概念综合评价体系的构建综合指标的预处理方法评价指标预处理示例 常用的综合评价数学模型线性加权综合评价模型TOPSIS法灰色关联度分析熵值法秩和比&#xff08;RSR&#xff09;法综合评价示例 综合评价的基本理论和数据…

安全基础~攻防特性3

文章目录 SSTI(模板注入)1. 简介2. 成因3. 常见框架存在注入4. 判断存在SSTI SSTI(模板注入) 1. 简介 (Server-Side Template Injection) 服务端模板注入 1、使用框架&#xff08;MVC的模式&#xff09;&#xff0c;如python的flask&#xff0c;php的tp&#xff0c;java的sp…

imgaug库图像增强指南(32):塑造【雪景】效果的视觉魔法

引言 在深度学习和计算机视觉的世界里&#xff0c;数据是模型训练的基石&#xff0c;其质量与数量直接影响着模型的性能。然而&#xff0c;获取大量高质量的标注数据往往需要耗费大量的时间和资源。正因如此&#xff0c;数据增强技术应运而生&#xff0c;成为了解决这一问题的…

JAVA的面试题四

1.电商行业特点 &#xff08;1&#xff09;分布式&#xff1a; ①垂直拆分:根据功能模块进行拆分 ②水平拆分:根据业务层级进行拆分 &#xff08;2&#xff09;高并发&#xff1a; 用户单位时间内访问服务器数量,是电商行业中面临的主要问题 &#xff08;3&#xff09;集群&…

C语言——联合和枚举

目录 一、联合体 1.1 联合体类型的声明 1.2 联合体的特点 1.3 相同成员的结构体和联合体对比 1.4 联合体大小的计算 1.5 联合的⼀个练习 二、枚举类型 2.1 枚举类型的声明 2.2 枚举类型的优点 2.3 枚举类型的使用 一、联合体 1.1 联合体类型的声明 像结构体⼀样…