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

news2024/9/29 6:06:13

第一:给大家推荐一个爬虫的网课哈,码起来
第二:今夜主题:通过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 etree

if __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.coloradmin.cn/o/1410141.html

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

相关文章

RBD —— 不同材质破碎

目录 Working with concrete Chipping Details Proxy geometry Constraints Working with glass Chipping Proxy geometry Constraints Resolving issues with glass fracturing Working with wood Clustering Using custom cutters Working with concrete Concr…

2024年破圈9套商业模式电商干货,真心分享丨项目孵化必看

2024年破圈9套商业模式电商干货&#xff0c;真心分享丨项目孵化必看 文丨微三云营销总监胡佳东&#xff0c;点击上方“关注”&#xff0c;为你分享市场商业模式电商干货。 - 疫情过后&#xff0c;市场瞬息万变&#xff0c;理想状态的消费复苏和消费回暖的机遇并没有到来&…

简述Elasticsearch(ES)是什么 全文搜索概念 (倒排索引 管理文档)

今天 我们来说说 NoSql 中的 Elasticsearch 大家基本都叫它 ES 官方介绍 它是一个分布式全文搜索引擎 分布式是一个系统架构的概念 而 全文搜索引擎 全文搜索 可以说基本大家天天都在接触 就比如 我们京东购物 想买什么东西 在全文输入框中搜索 它就会在所有物品中 帮你找出需…

2023年AI大模型:从科技热潮到商业变革

出品&#xff1a;新商纪&#xff0c;作者&#xff1a;独孤依风 2023年&#xff0c;大模型技术在全球科技界掀起了一场风暴&#xff0c;引发了科技巨头们的激烈角逐。这一年&#xff0c;大模型不仅重新定义了人工智能的边界&#xff0c;还催生了跨行业技术革新。 根据IDC的预测…

年少不知 Base 好,错把总包当成宝。。

今天聊一个很现实的话题&#xff1a;选 offer 对比薪资时&#xff0c;我强烈建议以 Base 为主&#xff0c;而不是总包。 为什么&#xff1f;且听鱼皮娓娓道来。 注意&#xff0c;以下为个人观点&#xff0c;仅供参考&#xff01; 首先明确 Base 和总包的概念&#xff1a; Base&…

使用PowerShell命令行,批量修改文件编码

目录 ■前言 ■PowerShell命令 ■效果 ■前言 今天统计修改代码量&#xff0c;使用工具时&#xff0c;发现有些代码无法统计。 原因时UTF-8中有某些特殊字符&#xff0c;工具不能识别。 但是&#xff0c;如果把代码转换为SJIS格式&#xff0c;就能正常统计了。 因此&…

猫头虎分享:已解决RuoYi-Vue3 项目代码生成器默认生成代码使用的Vue2模板代码问题与Vue2升级到Vue3解决方案

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通Golang》…

HCIP-11

生成树协议&#xff1a; 企业网三层架构---》冗余----》线路冗余---》二层桥接环路 导致问题&#xff1a; 广播风暴MAC地址表翻滚同一数据帧的重复拷贝以上3个条件最终导致设备工作过载&#xff0c;导致重启保护 生成树&#xff1a;在一个二层交换网络中&#xff0c;生成一棵…

Python之数据可视化基础

目录 一 JSON数据格式转换 二 pyecharts模块 三 Pyecharts入门 四 数据可视化之疫情折线图 一 JSON数据格式转换 什么是JSON? JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式。它以易于阅读和编写的方式来表示结构化数据。JSO…

Linux:Bash中变量的定义与使用

相关文章 Linux专栏https://blog.csdn.net/weixin_45791458/category_12234591.html 在bash shell中&#xff0c;变量(variable)是参数(parameter)的一类&#xff0c;用于存储值&#xff0c;且变量还可以拥有属性(attributes)&#xff0c;这通过bash内建命令declare来完成。 一…

Python 第四十三章 MYSQL 补充

多表查询 1.笛卡尔积:将两表所有的数据一一对应,生成一张大表 select * from dep,emp; #两个表拼一起 select * from dep,emp where dep.id emp.dep_id; #找到两表之间对应的关系记录 select * from dep,emp where dep.id emp.dep_id and dep.name技术; #筛选部门名称为技…

springboot优雅停机

import org.springframework.context.annotation.Configuration;import javax.annotation.PreDestroy;Configuration public class DataBackupConfig {PreDestroypublic void backData(){System.out.println("开始备份..."System.currentTimeMillis());System.out.pr…

基于springboot留守儿童爱心网站源码和论文

随着留守儿童爱心管理的不断发展&#xff0c;留守儿童爱心网站在现实生活中的使用和普及&#xff0c;留守儿童爱心管理成为近年内出现的一个热门话题&#xff0c;并且能够成为大众广为认可和接受的行为和选择。设计留守儿童爱心网站的目的就是借助计算机让复杂的管理操作变简单…

如何实现无公网ip远程访问本地websocket服务端【内网穿透】

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…

数据结构奇妙旅程之二叉树题型解法总结

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

【推荐100个unity插件之16】3D物品描边效果——Quick Outline免费插件

文章目录 前言地址介绍使用例子完结 前言 关于3D描边&#xff0c;其实之前有用shader弄过一个&#xff1a;【实现100个unity特效】shader实现3D物品闪光和描边效果 但是很遗憾的是他不支持URP项目&#xff0c;所以现在推荐这款插件&#xff0c;他能很好的支持URP&#xff0c;…

每日一题 2859. 计算 K 置位下标对应元素的和(简单)

每次有空做每日一题&#xff0c;都碰到简单题。。。。。。 class Solution:def sumIndicesWithKSetBits(self, nums: List[int], k: int) -> int:ans 0for i in range(len(nums)):cnt 0t iwhile t > 0:cnt 1 if t & 1 1 else 0t >> 1ans nums[i] if cnt…

嵌入式工程师如何写好技术文档

嵌入式方案设计文档该怎么写&#xff1f;你是不是从来没有想过这个问题&#xff1f;今天就来分享一篇优秀的文章&#xff1a; 很多技术人自己非常轻视技术文档的书写&#xff0c;然而又时常抱怨文档不完善、质量差、更新不及时…… 这种在程序猿间普遍存在的矛盾甚至已经演变成…

【LeetCode】222. 完全二叉树的节点个数(简单)——代码随想录算法训练营Day16

题目链接&#xff1a;222. 完全二叉树的节点个数 题目描述 给你一棵 完全二叉树 的根节点 root &#xff0c;求出该树的节点个数。 完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xf…