pyquery解析html -- 类似jq

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
from pyquery import PyQuery as pq
 
html = '''
    <ul>
        <li class="a1">123</li>
        <li class="a2">123</li>
        <li class="a3">123</li>
        <li>123</li>
    </ul>
    <p id="cc">xcxxx</p>
'''
#
# doc = pq(html)
# 获取单个
# p_text = doc('#cc')[0].text
# print(p_text)
# URL初始化
# doc = pq(url='http://www.baidu.com')
# print(doc('head'))
# 文件初始化
# doc = pq(filename='demo.html')
# print(doc('li'))
# 查找多个元素 和jq一样
# doc = pq(html)
# lis = doc('ul .a1,ul .a2,ul .a3')
# print(type(lis))
# print(lis[0].text)
# 查找子元素 (在ul中查找li标签)
# items = doc('ul')
# print(items.find('li'))
# print(items.children('.currentClass'))
# 查找父元素
# print(items.parent())
# print(items.parents())
# 兄弟元素获取
# print(items.siblings())  # 所有兄弟同级
# print(items.siblings('.active'))  # 也可以获取指定的
# 遍历元素
# lis = doc('li').items()
# for li in lis:
#     print(li)
#     print(li.text)
# 获取属性 2中方法
# a = doc('.item')
# print(a.attr('href'))
# print(a.attr.href)
# 获取文本 2中方法
# doc('#cc')[0].text
# doc("#ccc").text()
# 获取元素内的html
# lis = doc('li')
# lis.html()
 
# --------------------DOM 操作
# 删除 添加 class
# li = doc('.item')
# li.removeClass('active')
# li.addClass('active')
# 删除添加属性, CSS添加
# li = doc('.item')
# li.attr('name','active')
# li.css('font-size','14px')
# 删除元素
html = '''
    <div>
        Hello world!
        <p>remove this tag</p>
        <p>remove this tag</p>
         
    </div>
'''
# doc = pq(html)
# print(doc.text())
# doc.find('p').remove()  # 找到p并删除(如果有多个都会删除)
# print(doc.text())
 
# --------------  伪类选择器
# li = doc('li:first-child')
# li = doc('li:last-child')
# li = doc('li:nth-child(2)')  # 获取第二个子元素
# li = doc('li:gt(2)')  # 获取第二个以后得子元素
# li = doc('li:nth-child(2n)')  # 获取 0 2 4 6 8 ...

  

posted @   qukaige  阅读(667)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示