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>


相关文章
|
Web App开发 数据采集 JavaScript
动态网页爬取:Python如何获取JS加载的数据?
动态网页爬取:Python如何获取JS加载的数据?
1863 58
|
11月前
|
数据采集 存储 NoSQL
Python爬虫案例:Scrapy+XPath解析当当网网页结构
Python爬虫案例:Scrapy+XPath解析当当网网页结构
|
数据采集 Python
如何通过requests和time模块限制爬虫请求速率?
如何通过requests和time模块限制爬虫请求速率?
|
数据采集 存储 前端开发
Python爬虫自动化:批量抓取网页中的A链接
Python爬虫自动化:批量抓取网页中的A链接
|
数据采集 Web App开发 JavaScript
Python爬虫解析动态网页:从渲染到数据提取
Python爬虫解析动态网页:从渲染到数据提取
|
数据采集 Web App开发 JavaScript
Python爬虫如何获取JavaScript动态渲染后的网页内容?
Python爬虫如何获取JavaScript动态渲染后的网页内容?
|
数据采集 存储 数据库连接
Requests与BeautifulSoup:高效解析网页并下载资源
Requests与BeautifulSoup:高效解析网页并下载资源
|
数据采集 人工智能 监控
Crawl4LLM:你的模型还在吃垃圾数据?CMU博士开源AI爬虫,自动筛选高价值网页,数据抓取质量飙升300%
Crawl4LLM 是清华大学和卡内基梅隆大学联合开发的智能爬虫系统,通过网页价值评估和优先级队列技术,显著提升大语言模型预训练数据采集效率。
811 4
|
数据采集 Web App开发 JavaScript
Jsoup 爬虫:轻松搞定动态加载网页内容
Jsoup 爬虫:轻松搞定动态加载网页内容
|
XML 前端开发 API
网页内容解析技巧:Typhoeus 与 Nokogiri 的结合使用
网页内容解析技巧:Typhoeus 与 Nokogiri 的结合使用

推荐镜像

更多