【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据

目录

一、目标1、基础/环境的准备工作

二、目标2:开始使用pyquery

三、目标3:提取到指定的数据

四、目标3:通过列表的形式获取指定数据

五、扩展:其他方法

六、网络安全O


一、目标1、基础/环境的准备工作

1、文档:

PyQuery解析库的使用,我们可以对比jQuery来使用

jQuery API 中文文档https://www.94xh.com/

2、环境:

安装pyquery(或者直接在pycharm上安装)

pip install pyquery

3、定位

  • 定位li--->'li'

    定位

    --->'li .A'

    定位

    --->'li .A #B'

    (与顺序无关,与标签有关)


     



    二、目标2:开始使用pyquery

    1、打印head数据

    from pyquery import PyQuery as pq
    
    doc = pq(url='http://www.baidu.com')
    print(doc('head'))

    head数据被打印出来了,其实可以看见汉字是出现了乱码的

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第1张图片

    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'))

    没有了乱码问题

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第2张图片

     

    3、提取对应属性

    会提取所有满足条件的div标签

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第3张图片

     

    .official-newsbd爬取所有

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第4张图片

     

    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'))

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第5张图片

     



    三、目标3:提取到指定的数据

    1、目标:

    提取所有列表图片的相关信息

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第6张图片

    2、全提取: 

    提取所有的

    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)

    运行结果

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第7张图片

     

    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)

    运行结果

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第8张图片

    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)

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第9张图片

     

    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'))

    【网络安全带你练爬虫-100练】第12练:pyquery解析库提取指定数据_第10张图片

    改进前:

    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 = '''
    

    First paragraph

    Second paragraph

    Third paragraph

    ''' doc = pq(html) elem = doc('.second') siblings = elem.siblings() print(siblings)

    2、父类

    parent() 方法返回一个 PyQuery 对象,包含了当前元素的直接父级元素。父级元素是指当前元素的上一级节点,即当前元素的父节点
     

    from pyquery import PyQuery as pq
    
    html = '''
    

    Child paragraph

    ''' 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

    你可能感兴趣的:(【网络安全-带你练爬虫】,web安全,爬虫,安全)