PyQuery 通过规则获取指定数量,指定形式的的节点

2024-06-19 09:38

本文主要是介绍PyQuery 通过规则获取指定数量,指定形式的的节点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PyQuery

对于PyQuery就没什么好说的了,网上大量的说明:
其是参照JQuery实现的python库,同BeautifulSoup一样 用于快速解析xml和html文件

获取你要的节点

以 爱丽丝梦游仙境 中的一段稍作修改后写个小例子的例子:

html = '''
<html><head><title>The Dormouse's story</title></head><body><p class="title"> <b>The Dormouse's story</b> </p><p class="story">Once upon a time there were three little sisters; and their names were<a class="sister" href="http://example.com/elsie" id="link0"> start </a><a class="sister" href="http://example.com/elsie" id="link1"> Elsie </a>,<a class="sister" href="http://example.com/lacie" id="link2"> Lacie </a> and<a class="sister" href="http://example.com/tillie" id="link3"> Tillie </a>;<a class="sister" href="http://example.com/tillie" id="link4"> and they lived at the bottom of a well </a><a class="sister" href="http://example.com/elsie" id="link5"> end </a></p><p class="story">...</p></body>
</html>
'''
doc = pq(html, parser='html')
print('第一个a节点:', doc('a:first-child'))
print('最后一个a节点:', doc('a:last_child'))
print('第二个a节点:', doc('a:nth-child(2)'))
print('第三个后的所有a节点:', doc('a:gt(2)'))
print('前三个a节点:', doc('a:lt(3)'))
print('包含指定文本文本的节点:', doc('a:contains(Elsie)'))  # 文本Elsie
print('索引第一个节点:', doc('a:eq(0)'))
print('偶数的所有a节点:', doc('a:nth-child(2n)'))  
print('奇数节点:', doc('a:even'))
print('偶数节点:', doc('a:odd'))

注意:索引是从0开始的

获取CSDN下某博主所有的博文信息

先看csdn主页信息如下:
在这里插入图片描述
获取需要信息的关键节点参数,直接提取,代码如下:
注意获取博文名要跳过span节点,利用lt获取指定数量

from pyquery import PyQuery as pqdef get_info_from_url(url,  limit):`在这里插入代码片`try:print("-"*100)doc = pq(url)if limit:item_box = doc(".article-list .article-item-box" + (f":lt({limit})" if limit > 0 else ""))yield from [{"url": info.attr.href, "name": info.text()} for info in item_box("a").items()if info.find("span").remove()]except Exception as e:print("RequestException:", e)url_input = input("输入网址:").strip()  # CSDN,博主主页链接https://blog.csdn.net/xxx
try:num = int(input("输入要获取的数量:"))	 # 输入负数表示获取全部
except:num = -1
for i in  get_info_from_url(url_input, num):print(i)

根据以上代码,获取指定博主的博文的url和博文名称
需要手动输入博主主页链接如:https://blog.csdn.net/u011888840
输入获取博文的数量:需要输入数字,负数会显示所有
其规则是以字符串形式指定,可以通过f字符串或format制定自己想要的规则筛选,非常方便

列出一段获取https://blog.csdn.net/u011888840前五个博文信息的打印信息:
输入https://blog.csdn.net/u011888840和5得到

这篇关于PyQuery 通过规则获取指定数量,指定形式的的节点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074667

相关文章

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

遮罩,在指定元素上进行遮罩

废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

C#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div