数据解析

正则

对爬取的数据使用 正则表达式进行过滤

bs4

解析实现,实例化一个 BeautifulSoup 对象,并将页面源码加载到该对象中。通过调用 此对象中的相关方法,进行标签定位或 数据提取

环境安装: bs4, lxml

使用:

查找筛选

  • 查找标签 soup.labelName, 返回第一个对应的标签. ==> .find('labelName')
  • 属性筛选标签 .find('tabName', class_=''), ( attr={}...)返回符合条件的 第一个标签
  • .find_all(), 返回全部, limit 指定返回个数。find 是包装于 find_all 的
  • .select('') 选择器筛选标签. 返回列表

指定值获取

  • .find().text 获取某一个的标签的 所有文本内容
  • .find.string 获取标签下的直系文本内容. 有问题?? 直系文本内容并不能获取
  • .find()\['herf'\] 获取指定属性值
from bs4 import BeautifulSoup

if __name__ == '__main__':
    with open('./response/test.html', 'r', encoding='utf-8') as fp:
        # 使用本地 文件,也可以直接使用字符串
        # soup = BeautifulSoup('<h1>sda</h1>', 'lxml')
        soup = BeautifulSoup(fp, features='lxml')
    print(soup.a)
    print(soup.find('div', class_='aiwsp__info'))
    print(soup.select('div .test'))

    print(soup.find('div', class_= 'box_test').text)
    print(soup.find('div', class_='box_test').string)

xpath

最常用的一种解析方式,通用性高。使用 xpath 表达式解析获取 相关数据。

使用

简单的 xpath 语法:

  • / 表示直系子节点,
  • // 表示从任意位置开始定位(前一节点的所有孙子节点,
  • @ 选择属性
  • . 当前节点
  • .. 父节点
  • 属性定位 tag[@attrName="attrVal"]

  • /text() 取出文本值

  • /@attrName 取出属性值
from lxml import etree

if __name__ == '__main__':

    parser = etree.HTMLParser(encoding="utf-8")
    # 对本地文件进行解析
    # 原有xml解析器, 会对 html文件进行检测,不符合规范会报错。什么鬼   
    # etree.HTML(stringHTML)
    ElementTree_obj = etree.parse('./response/test.html', parser=parser)

    Element_obj = ElementTree_obj.xpath('/html/body/div')
    # 使用索引取出第几个元素下的子孙节点文本值,注意索引 从 1开始
    script_dom = ElementTree_obj.xpath('//script[1]//text()') # 返回结果列表中,有多个对象??
    # /./ 演示,实际多此一举
    script_defer_src = ElementTree_obj.xpath('//script[@defer]/./@src')

    print(Element_obj)
    for i in script_dom:
        print(i, '\n------------>')
    print(script_defer_src)

更多 xpath 语法


相关推荐:

来自系列:Python 爬虫学习笔记

分类 python下文章:

1.0 爬虫的介绍,和requests模块的简单使用

2.0 多任务(进程,协程,线程)爬虫:验证码识别,返回头储存,ip代理 介绍。 异步是什么,爬虫异步的方式。线程,进程,介绍

2.0.1 协程的 async/await 实现 爬虫 单线程 + 异步协程的实现

3.0 基于selenium 模块的 爬虫操作。 selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。

更多...

评论([[comments.sum]])

发表

加载更多([[item.son.length-2]])...

发表

2020-11 By chuan.

Python-flask & bootstrap-flask

图片外链来自:fghrsh

互联网ICP备案号:蜀ICP备2020031846号