css选择器在python中如何使用

css选择器整理:https://blog.csdn.net/qq_40910788/article/details/84842951

目标:爬取某文章网站列表:
在这里插入图片描述
基础代码如下:

import random
import time
import urllib.request
import redef reptileTest(url):try:my_headers = ["Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)"]randdom_header = random.choice(my_headers)rep = urllib.request.Request(url)rep.add_header("User-Agent", randdom_header)rep.add_header("GET", url)res = urllib.request.urlopen(rep, timeout=5)html = res.read().decode("gb2312", 'ignore')from bs4 import BeautifulSoupweb = BeautifulSoup(html, features="html.parser")# 开始使用选择器选择目标标签except Exception as ex:print("异常%s" % ex)

1.F12或右键查看网页源代码确定采集目标
在这里插入图片描述
2.确定目标后分析前后整体标签
在这里插入图片描述
其中我们要采集的是a标签中的文字以及url,而包含我们要采集整体内容的标签是外层的ul标签,ul标签的class就是选择器要用到的内容,ctrl+f,检查此样式是否唯一
在这里插入图片描述
如果唯一,那么我们直接使用选择选择此样式得到的结果就是这个整体的ul
class的内容在选择器里需要加“.”标识为class,代码如下

# web.select为选择器代码
articlelist = web.select(".list-new ")

然后向下一级指定获取的标签 li 再下一级是 a,这里都是获取标签,标签无需加任何修饰

# > 代表获取当前标签下的内容,如果使用空格则标识获取当前标签下同级的内容
articlelist = web.select(".list-new > li > a")

运行结果:
在这里插入图片描述
完整代码:

import random
import time
import urllib.request
import redef reptileTest(url):try:my_headers = ["Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36","Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14","Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)"]randdom_header = random.choice(my_headers)rep = urllib.request.Request(url)rep.add_header("User-Agent", randdom_header)rep.add_header("GET", url)res = urllib.request.urlopen(rep, timeout=5)html = res.read().decode("gb2312", 'ignore')from bs4 import BeautifulSoupweb = BeautifulSoup(html, features="html.parser")# 开始使用选择器选择目标标签articlelist = web.select(".list-new > li > a")#取值for a in articlelist:print("标题:"+a.text+" ----------- url:"+a.get("href"))except Exception as ex:print("异常%s" % ex)reptileTest("目标页面url")

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

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

相关文章

人工智能技术的应用

人工智能技术的应用:无人手机可以通过集成人工智能技术,实现语音识别、语音合成、自然语言处理等功能,从而实现更加智能化的交互体验。 室内定位技术的改进:无人手机需要准确地了解自己的位置信息,以便更好地为用户提…

Self-Attention

前置知识:RNN,Attention机制 在一般任务的Encoder-Decoder框架中,输入Source和输出Target内容是不一样的,比如对于英-中机器翻译来说,Source是英文句子,Target是对应的翻译出的中文句子,Attent…

Mybatis-Plus常用注解总结

Mybatis-Plus是一个在Mybatis基础上进行增强的ORM框架,提供了许多便捷的注解来简化数据库操作。本文将介绍Mybatis-Plus常用的注解以及它们的使用方法。 1. TableName TableName注解用于指定实体类对应的数据库表名。使用该注解可以省去手动编写SQL语句的繁琐过程…

深入理解虚拟DOM:原理、优势与实践

文章目录 1. DOM操作与性能问题1 DOM操作对性能的影响:重绘与重排2 频繁DOM操作导致的问题3 案例分析:传统Web应用中的性能瓶颈 2. 虚拟DOM的概念与原理1 虚拟DOM的定义2 虚拟DOM与真实DOM的关系虚拟DOM的工作原理:初始化、更新、对比、渲染 …

编程笔记 html5cssjs 037 CSS选择器

编程笔记 html5&css&js 037 CSS选择器 一、CSS 选择器二、CSS 元素选择器三、CSS id 选择器四、CSS 类选择器五、CSS 通用选择器小结 CSS用于处理网页的样式,就像一个人的装扮,拿来一个衣物或饰品,你得知道穿着在什么部位&#xff0c…

Danswer部署指南

Quickstart How to deploy Danswer on your local machine ​ Requirements gitdocker with compose (docker version > 1.13.0) ​ Setup This quickstart guide covers setting up Danswer for local execution Clone the Danswer repo: git clone https://github.com…

Mysql 数据库ERROR 1820 (HY000): You must reset your password using ALTER USER 解决办法

Mysql 5.7数据库原来一直都能正常访问,突然访问不了,查看日志提示数据库需要修改密码, 具体解决办法如下操作: Windows 下: mysql的bin目录下, mysql>use mysql; mysql>mysql -uroot -p密码; 判…

gem5学习(14):将gem5扩展到ARM——Extending gem5 for ARM

目录 一、Downloading ARM Binaries 二、Building gem5 to run ARM Binaries 三、Modifying simple.py to run ARM Binaries 四、Running gem5 五、ARM Full System Simulation An aside on FS simulations 这个是gem5-learning中Getting Started的最后一篇文章&#xff…

信创平台迁移认知误区

误区一 问题:应用采用JDK1.5、JDK1.6进行开发,是否可以迁移到信创平台的TongWeb下,需要用TongWeb哪个版本 ? 错误答复:JDK1.5需要采用TongWeb5.0、JDK1.6需要采用TongWeb6.1、JDK1.7需要采用TongWeb7.0、最新TongWe…

imgaug库指南(20):从入门到精通的【图像增强】之旅

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

c# 文本加密解密

在C#中实现加密功能,您可以使用.NET框架提供的System.Security.Cryptography命名空间下的多种加密算法类。这里我将给出一个使用AES(Advanced Encryption Standard)对称加密算法的简单示例: using System; using System.IO; usin…

Android Jetpack中Lifecycle使用生命周期感知型组件处理生命周期

在使用Kotlin实现Android Jetpack中Lifecycle使用生命周期感知型组件处理生命周期的功能时,你需要以下步骤: 首先,在app的build.gradle文件中添加Lifecycle相关库的依赖项: implementation "androidx.lifecycle:lifecycle-…

各版本 操作系统 对 .NET Framework 与 .NET Core 支持

有两种类型的受支持版本:长期支持 (LTS) 版本和标准期限支持 (STS) 版本。 所有版本的质量都是一样的。 唯一的区别是支持的时间长短。 LTS 版本可获得为期三年的免费支持和补丁。 STS 版本可获得 18 个月的免费支持和修补程序。 有关详细信息,请参阅 .N…

Java重修第五天—面向对象2

通过学习本篇文章可以掌握如下知识 static;设计单例;继承。 之前文章我们已经对面向对象进行了入门学习,这篇文章我们就开始深入了解面向对象设计。 static 我们定义了一个 Student类,增加姓名属性:name &#xff1…

[paddle]paddlehub部署paddleocr的hubserving服务

步骤如下: 第一步:首先需要安装好paddleocr环境已经paddlehub环境 第二步:下载paddleocr源码: git clone https://github.com/PaddlePaddle/PaddleOCR.git 然后切换到paddocr目录执行 新建个文件夹叫Inference把paddleocr模型…

用通俗易懂的方式讲解:内容讲解+代码案例,轻松掌握大模型应用框架 LangChain

本文介绍了 LangChain 框架,它能够将大型语言模型与其他计算或知识来源相结合,从而实现功能更加强大的应用。 接着,对LangChain的关键概念进行了详细说明,并基于该框架进行了一些案例尝试,旨在帮助读者更轻松地理解 L…

最好的 8 个解锁 Android 手机的应用程序分析

如何解锁我的 Android 手机是一个困扰全球数百万人的问题。有多种Android解锁器可用于解锁手机。用户应确保选择最好的应用程序以轻松满意地完成工作。必须注意的是,数据在解锁手机的整个过程中都是安全可靠的。此类应用程序还应该能够在所有情况下检索数据。 锁屏移…

关于游戏工业化的小讨论

大家好,我是阿赵。   上周末讨论了一下游戏美术人员的技术与艺术之间的问题。这个问题其实攻击性挺强,很多从事游戏美术工作的朋友可能都觉得受到了一定伤害。对于这点,我先对从事美术工作的朋友们道个歉。我个人感觉,这个问题不…

时间差异导致数据缺失,如何调整Grafana时间与Prometheus保持同步?

Grafana时间如何调快或调慢? 在k8s环境中,常使用prometheusgrafana做监控组件,prometheus负责采集、存储数据,grafana负责监控数据的可视化。 在实际的使用中,有时会遇到这样的问题,k8s集群中的时间比真实…

力扣:209.长度最小的子数组

1.题目分析: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 …