Python爬虫:pyquery模块解析网页

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Python爬虫:pyquery模块解析网页

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>
相关文章
|
10天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
11天前
|
数据采集 缓存 定位技术
网络延迟对Python爬虫速度的影响分析
网络延迟对Python爬虫速度的影响分析
|
12天前
|
数据采集 Web App开发 监控
高效爬取B站评论:Python爬虫的最佳实践
高效爬取B站评论:Python爬虫的最佳实践
|
7天前
|
数据采集 前端开发 JavaScript
除了网页标题,还能用爬虫抓取哪些信息?
爬虫技术可以抓取网页上的各种信息,包括文本、图片、视频、链接、结构化数据、用户信息、价格和库存、导航菜单、CSS和JavaScript、元数据、社交媒体信息、地图和位置信息、广告信息、日历和事件信息、评论和评分、API数据等。通过Python和BeautifulSoup等工具,可以轻松实现数据抓取。但在使用爬虫时,需遵守相关法律法规,尊重网站的版权和隐私政策,合理控制请求频率,确保数据的合法性和有效性。
|
13天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
17天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
7天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
23 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
67 0
|
1月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
54 0
|
1月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
60 0