selenium+xpath爬取二手房标题

贝壳找房标题爬取需要注意的是,在页面中间有一个小广告

而他就在ul的li下面,当我们进行title所以输出时,会报错。

所以在进行页面解析之前必须把广告叉掉,不然也把广告那一部分的li给爬取下来了

所以,我们,定位到上面箭头那里,进行 x掉,也就是利用click事件进行处理

然后第二个就是当进行下一页时,url会更换

所以当我们要第23456……页时,必须刷新新的url

(如果换页时,url没变的情况下,则只需元素定位到下一页的按钮进行click事件处理即可)。

要注意的就是以上那么多,代码如下

 

from selenium import webdriver
from lxml import etree
from selenium.webdriver.common.by import By
from time import sleep
from selenium.webdriver import ChromeOptions
cho=ChromeOptions()
cho.add_experimental_option('excludeSwitches',['enable-automation'])
#浏览器驱动
bro=webdriver.Chrome(options=cho)
sleep(1)
all_page=[]
for i in range(5):
    bro.get(f'https://bj.ke.com/ershoufang/pg{i+1}/')
    # 睡个两秒,防止页面没有加载完成
    sleep(2)
    #把广告去掉,因为广告是ul下的一个li。
    bro.find_element(By.CLASS_NAME,'daoliu_close').click()
    #点击后进行解析,并且放进列表里面
    all_page.append(bro.page_source)
    print(f'已经把第{i+1}页HTML内容放入列表中')
    print('--------------------------------------------------------------------------------------------------------------')

s=1
#页面列表循环遍历进行解析。
for page in all_page:
    tree=etree.HTML(page)
    #睡个两秒,防止页面没有加载完成
    sleep(2)
    li_list=tree.xpath('/html/body/div[1]/div[4]/div[1]/div[4]/ul/li')
    #再睡个两秒,防止页面没有加载完成
    sleep(2)
    print(f"正在爬取第{s}页内容****************************************************")
    sleep(1)
    #打印测试有没有空元素
    print(len(li_list))
    for dl in li_list:
      title=dl.xpath('./a/@title')[0]#@title只有一个所以【0】就行
      print(title)
    print(f'第{s}爬取完成*********************************************************')
    s=s+1
    sleep(1)
sleep(2)
bro.quit()

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【音视频 | H.264】H.264视频编码及NALU详解

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

医药行业的数据安全革新者:上海迅软DSE成功案例揭秘

随着网络化办公在医药企业中不断的深入应用,企业内部的药品保密配方、研发成果、技术资料等重要信息都散布在电脑或流转于网络之中,同时各种内部系统又集中存放着大量的敏感数据,一旦这些数据资产发生泄密,将对企业的持续运营造成…

Windows7下双网卡绑定(双网络冗余)

1.首先需要电脑主机里至少有两张网卡。 2.打开计算机管理,点击左侧的设备管理器: 3.点击展开右侧的 网络适配器: 4.如下是我们即将需要进行绑定的两张网卡: 5.右键点击第一张网卡,选择属性: 6.选择 分组 栏…

架构设计系列之常见架构(二)

五、DDD(领域驱动设计) 领域驱动设计(Domain-Driven Design,DDD)是一种开发思想,强调将软件系统的注意力集中在业务领域上,将领域视为应用的核心。在架构设计中,DDD 提供了一种不同…

【云原生kubernets】Service 的功能与应用

一、Service介绍 在kubernetes中,pod是应用程序的载体,我们可以通过pod的ip来访问应用程序,但是pod的ip地址不是固定的,这也就意味着不方便直接采用pod的ip对服务进行访问。为了解决这个问题,kubernetes提供了Service资…

26 redis 中 replication/cluster 集群中的主从复制

前言 我们这里首先来看 redis 这边实现比较复杂的 replication集群模式 我们这里主要关注的是 redis 这边的主从同步的相关实现 这边相对比较简单, 我们直接基于 cluster集群模式 进行调试 主从命令同步复制 比如这里 master 是 redis_7002, slave 是 redis_7005 然后 这…

[c++]—vector类___提升版(带你了解vector底层的运用)

我写我 不论主谓宾 可以反复错 🌈vector的介绍 1.vector是表示可变大小数组的序列容器2.就像数组一样,vector也采用的连续存储空间来存储元素,也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组&…

工业性能CCD图像处理+

目录 硬件部分 ​编辑 软件部分 CCD新相机的调试处理(更换相机处理,都要点执行检测来查看图像变化) 问题:新相机拍摄出现黑屏,图像拍摄不清晰,(可以点击图像,向下转动鼠标的滚轮&#xff08…

nlp与cv的发展

Transformer的出现,促进了更高容量模型的建立,为大模型的出现奠定基础. 🧐大模型通常具有十亿个以上参数(仅供参考) 😮左边的蓝色是CV领域、右下绿色是NLP、右上蓝色是多模态😃基础模型(Foundational Models)首次由Bommasani等人在《Stanford…

算法--数据结构基础

文章目录 数据结构单链表栈表达式求值前缀表达式中缀表达式后缀表达式 队列单调栈单调队列KMPTrie并查集堆哈希表字符串哈希 数据结构 单链表 用数组模拟(静态链表)效率比定义Node类(动态链表)效率高些 使用数组模拟单链表&am…

2023年总结,讲讲我的故事吧,十年

文章目录 2023前十年后十年 周末,本该是提升自己的最好时机,也该是出去玩的大好时光,但是毫无意外的,在家躺了一天,单纯的有点累。 2023年,发生了好多事情,又好像没发生几件事,可能毕…

插入排序:直接插入排序 希尔排序

插入排序: 假设红竖线前的元素全部排好序,红线后面的数即为要插入的数据,红线依次往后移,假设end为排好序的最后一个数字,end1即为要插入的数字,一次插入时,end与要插入的数字依次比较&#xf…

springMVC-Restful风格

基本介绍 REST:即Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用. 1.HTTP协议里面,四个表示操…

Java技术栈 —— 微服务框架Spring Cloud —— Ruoyi-Cloud 学习(二)

RuoYi项目开发过程 一、登录功能(鉴权模块)1.1 后端部分1.1.1 什么是JWT?1.1.2 什么是Base64?为什么需要它?1.1.3 SpringBoot注解解析1.1.4 依赖注入和控制反转1.1.5 什么是Restful?1.1.6 Log4j 2、Logpack、SLF4j日志框架1.1.7 如何将项目打包成指定bytecode字节…

ValueError: setting an array element with a sequence...

报错:ValueError: setting an array element with a sequence… 案例1:numpy库使用numpy.array转换list a是一个list,其包含两个元组,使用np.array进行转换,会报错: import numpy as np a ([([1, 2, 3]…

nodejs微信小程序+python+PHP的微博网络舆情分析系统-计算机毕业设计推荐

(4)微博信息交流:在首页导航栏上我们会看到“微博信息交流”这一菜单,我们点击进入进去以后,会看到所有管理员在后台发布的交流信息; (5)新闻资讯:用户可以查看新闻资讯信…

关于“Python”的核心知识点整理大全24

10.1.6 包含一百万位的大型文件 前面我们分析的都是一个只有三行的文本文件,但这些代码示例也可处理大得多的文件。 如果我们有一个文本文件,其中包含精确到小数点后1 000 000位而不是30位的圆周率值,也可 创建一个包含所有这些数字的字符串。…

HiveSql语法优化三 :join优化

前面提到过:Hive拥有多种join算法,包括Common Join,Map Join,Bucket Map Join,Sort Merge Buckt Map Join等;每种join算法都有对应的优化方案。 Map Join 在优化阶段,如果能将Common Join优化为…

Java 基础学习(十二)文本I/O、日期与时间API

1 文本 I/O 1.1 字符流 1.1.1 什么是字符流 在Java中,字符流是指提供了基于字符的I/O能力的API。 Java 1.0中提供的基于字节的I/O流API只能支持8位字节流,无法妥善地处理16位Unicode字符。由于需要支持Unicode处理国际化字符,因此Java 1.…

TCP/IP详解——HTTPS 协议

文章目录 1. HTTPS 协议1.1 HTTPS 原理1.2 HTTPS 过程1.3 从数据包角度看 HTTPS 交互过程1.4 常见的 HTTPS 数据包解码1.4.1 ClientHello 数据包1.4.2 ServerHello 数据包 1.5 思考 1. HTTPS 协议 1.1 HTTPS 原理 HTTPS概念 HTTPS 是以安全为目标的HTTP通道,并不…