Python爬虫:pyquery模块解析网页

简介: Python爬虫:pyquery模块解析网页

官方文档:https://pythonhosted.org/pyquery/index.html

CSS 选择器参考手: http://www.w3school.com.cn/cssref/css_selectors.asp


pyquery可以解析网页

pyquery: a jquery-like library for python

代码示例

from pyquery import PyQuery
# 获取网页文档
doc = PyQuery(url="http://www.baidu.com", encoding="utf-8")
print(doc("title"))
# <title>百度一下,你就知道</title>
html = """
<html>
<head>
<title>测试的内容</title>
</head>
<body>
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
<a href="http://www.baidu.com"><span>百度图标</span>百度</a>   
</body>
</html>
"""
# 通过字符串实例化
doc = PyQuery(html)
print(type(doc))
# <class 'pyquery.pyquery.PyQuery'>
# 获取元素文本
print(doc("title").text())
# 测试的内容
# 查找元素
body = doc("body")
p = body.find("p")
print(p)
"""
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
"""
# 子元素
child = body.children()
print(child)
"""
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
<a href="http://www.baidu.com"><span>百度图标</span>百度</a>
"""
# 父元素
container = doc("#p2").parent()
print(container)
"""
<body>
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
<a href="http://www.baidu.com"><span>百度图标</span>百度</a>   
</body>
"""
# 兄弟标签
p = doc(".myp")
p3 = p.siblings()
print(p3)
"""
<p id="p2">第二个p标签</p>
<p>第一个p标签</p>
<a href="http://www.baidu.com"><span>百度图标</span>百度</a>   
"""
# 遍历
ps = doc.find("p").items()
for p in ps:
    print(p)
"""
<p>第一个p标签</p>
<p id="p2">第二个p标签</p>
<p class="myp">第三个p标签</p>
"""
# 获取属性
a = doc.find("a")
print(a.attr("href"))
print(a.attr.href)
"""
http://www.baidu.com
http://www.baidu.com
"""
# 获取html
print(a.html())
# <span>百度图标</span>百度
# DOM操作
# add_class remove_class
a.add_class("myclass")
print(a)
# <a href="http://www.baidu.com" class="myclass"><span>百度图标</span>百度</a>
a.remove_class("myclass")
print(a)
# <a href="http://www.baidu.com" class=""><span>百度图标</span>百度</a>
# 获取、赋值attr
a.attr("name", "link")
print(a)
# <a href="http://www.baidu.com" class="" name="link"><span>百度图标</span>百度</a>
print(a.attr("name"))
# link
# 设置css
a.css("color", "red")
print(a)
# <a href="http://www.baidu.com" class="" name="link" style="color: red"><span>百度图标</span>百度</a>
# remove
print(a.text())
# 百度图标百度
a.remove("span")
print(a.text())
# 百度
# 伪类选择器
p1 = doc("p:first-child")
print(p1)
# <p>第一个p标签</p>
p3 = doc("p:last")
print(p3)
# <p class="myp">第三个p标签</p>
p2 = doc("p:nth-child(2)")
print(p2)
# <p id="p2">第二个p标签</p>
p2 = doc("p:nth-child(2n)")
print(p2)
# <p id="p2">第二个p标签</p>
p = doc("p:contains(第三)")
print(p)
# <p class="myp">第三个p标签</p>


相关文章
|
1天前
|
存储 SQL 缓存
阿里云大学考试python中级题目及解析-python中级
阿里云大学考试python中级题目及解析-python中级
|
3天前
|
人工智能 Python
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
【Python实用技能】建议收藏:自动化实现网页内容转PDF并保存的方法探索(含代码,亲测可用)
21 0
|
3天前
|
数据采集 存储 人工智能
【AI大模型应用开发】【LangChain系列】实战案例2:通过URL加载网页内容 - LangChain对爬虫功能的封装
【AI大模型应用开发】【LangChain系列】实战案例2:通过URL加载网页内容 - LangChain对爬虫功能的封装
14 0
|
4天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
13 0
|
7天前
|
数据采集 机器学习/深度学习 数据挖掘
Python数据清洗与预处理面试题解析
【4月更文挑战第17天】本文介绍了Python数据清洗与预处理在面试中的常见问题,包括Pandas基础操作、异常值处理和特征工程。通过示例代码展示了数据读取、筛选、合并、分组统计、离群点检测、缺失值和重复值处理、特征缩放、编码、转换和降维。强调了易错点,如忽视数据质量检查、盲目处理数据、数据隐私保护、过度简化特征关系和忽视模型输入要求。掌握这些技能和策略将有助于在面试中脱颖而出。
23 8
|
8天前
|
数据采集 JavaScript 前端开发
使用Python打造爬虫程序之破茧而出:Python爬虫遭遇反爬虫机制及应对策略
【4月更文挑战第19天】本文探讨了Python爬虫应对反爬虫机制的策略。常见的反爬虫机制包括User-Agent检测、IP限制、动态加载内容、验证码验证和Cookie跟踪。应对策略包括设置合理User-Agent、使用代理IP、处理动态加载内容、验证码识别及维护Cookie。此外,还提到高级策略如降低请求频率、模拟人类行为、分布式爬虫和学习网站规则。开发者需不断学习新策略,同时遵守规则和法律法规,确保爬虫的稳定性和合法性。
|
9天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
28 0
|
1天前
|
XML 人工智能 Java
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
Spring Bean名称生成规则(含源码解析、自定义Spring Bean名称方式)
|
10天前
yolo-world 源码解析(六)(2)
yolo-world 源码解析(六)
19 0
|
10天前
yolo-world 源码解析(六)(1)
yolo-world 源码解析(六)
13 0

推荐镜像

更多