目录
一、目标1、基础/环境的准备工作
二、目标2:开始使用pyquery
三、目标3:提取到指定的数据
四、目标3:通过列表的形式获取指定数据
五、扩展:其他方法
六、网络安全O
一、目标1、基础/环境的准备工作
1、文档:
PyQuery解析库的使用,我们可以对比jQuery来使用
jQuery API 中文文档https://www.94xh.com/
2、环境:
安装pyquery(或者直接在pycharm上安装)
pip install pyquery
3、定位
<li>
<div class="A">
<div id="B">
定位li--->'li'
定位<div class="A">--->'li .A'
定位<div id="B">--->'li .A #B'
(与顺序无关,与标签有关)
二、目标2:开始使用pyquery
1、打印head数据
from pyquery import PyQuery as pq
doc = pq(url='http://www.baidu.com')
print(doc('head'))
head数据被打印出来了,其实可以看见汉字是出现了乱码的
2、编码:
解决乱码问题(就是使用utf-8编码,来解决中文乱码)
import requests
from pyquery import PyQuery as pq
response = requests.get('http://www.baidu.com')
content = response.content.decode('utf-8')
doc = pq(content)
print(doc('head'))
没有了乱码问题
3、提取对应属性
会提取所有满足条件的div标签
.official-newsbd爬取所有<div class="official-newsbd">
import requests
from pyquery import PyQuery as pq
response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
print(doc('.official-newsbd'))
三、目标3:提取到指定的数据
1、目标:
提取所有列表图片的相关信息
2、全提取:
提取所有的<div class="thumb">
import requests
from pyquery import PyQuery as pq
response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
items = doc('.thumb')
print(item)
运行结果
3、逻辑提取:
这个是一步一步往下走提取内容
import requests
from pyquery import PyQuery as pq
response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
items = doc('.official-newsbd')
item = items.find('.thumb')
print(item)
运行结果
4、列表数据提取
children()
是一个函数或方法,用于获取一个元素的所有子元素
item = items.children()
四、目标3:通过列表的形式获取指定数据
假设我们要提取到链接URL
1、找到最小子标签
首先我们先到最小子标签
(可以不用逻辑一步一步往下走,也可以直接找到它)
import requests
from pyquery import PyQuery as pq
response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
items = doc('.official-newsbd')
item = items.find('.thumb')
i = item('a')
print(i)
2、for循环-提取标签内URL
关键代码
(其实 实现的方法各种各样)
.attr('href')
.attr.href
完整代码
import requests
from pyquery import PyQuery as pq
response = requests.get('https://www.chinaz.com/')
content = response.content.decode('utf-8')
doc = pq(content)
items = doc('.official-newsbd')
item = items.find('.thumb')
for i in item:
b = pq(i)('a')
print(b.attr('href'))
改进前:
items = doc('.official-newsbd')
item = items.find('.thumb')
改进后:
item = doc('.official-newsbd .thumb')
3、获取文本
关键代码
b.text()
(我这个目标标签没有文本去提取)
五、扩展:其他方法
1、兄弟类
siblings() 方法返回一个 PyQuery 对象,包含了当前元素的所有同级元素。这些同级元素是当前元素的直接兄弟节点(相同父节点下的其他子节点),不包括当前元素本身
from pyquery import PyQuery as pq
html = '''
<div>
<p class="first">First paragraph</p>
<p class="second">Second paragraph</p>
<p class="third">Third paragraph</p>
</div>
'''
doc = pq(html)
elem = doc('.second')
siblings = elem.siblings()
print(siblings)
2、父类
parent() 方法返回一个 PyQuery 对象,包含了当前元素的直接父级元素。父级元素是指当前元素的上一级节点,即当前元素的父节点
from pyquery import PyQuery as pq
html = '''
<div class="parent">
<p>Child paragraph</p>
</div>
'''
doc = pq(html)
child = doc('p')
parent = child.parent()
print(parent)
六、网络安全O
README.md · 书半生/网络安全知识体系-实战中心 - 码云 - 开源中国 (gitee.com)https://gitee.com/shubansheng/Treasure_knowledge/blob/master/README.md
GitHub - BLACKxZONE/Treasure_knowledgehttps://github.com/BLACKxZONE/Treasure_knowledge