zoukankan      html  css  js  c++  java
  • bs4和xpath的用法

    1.bs4的运用
    流程:
    1.导入相应的模块:from bs4 import BeautifulSoup
    2.实例化一个 BeautifulSoup 对象,并将我们要解析的数据加载到该对象中:soup = BeautifulSoup('要解析的数据','lxml(解析器)')
    3.定位标签:(1).通过标签名定位:soup.标签名 第一个标签
    (2).通过标签名和属性定位soup.find('标签名',attr = {'属性名':属性值}) 返回的是查询到的第一个标签
    soup.findAll('标签名',attr = {'属性名':属性值}) 返回的一个由所有结果构成的列表
    (3). 通过选择器定位:select('selector')其中selector像css那样的层级关系eg:('.card > h1 > a ')返回的也是一个列表
    4.数据的提取:要注意的是findAll与select返回的都是列表,所有我们必须确定到要提取的某个标签
    (1)string:取出标签直系的文本内容
    . (2)text:取出标签中所有的文本内容
    (3)标签名['属性名']:获取属性的值
    5.爬取一个小说实例:https://www.cnblogs.com/KingOfCattle/p/12907968.html

    2.xpath的运用:
    流程:
    (1). 导入相应的模块:from lxml import etree
    (2).实例化etree对象,并将我们要解析的数据加载到该对象中:解析本地etree.parse('要解析的数据'),解析爬取的数据etree.HTML('要解析的数据')
    (3).该对象结合xpath表达式进行提取数据,获取的数据都存储在列表里面了
    xpath表达式: 1.表示一个层级,但是/在最左边的时候表示从根标签开始定位
    2.//跳多个层级,最左边的时候表示从任意地方开始定位
    3.属性定位://标签名[@属性名='属性值']
    4.索引定位://标签名[index],index索引是从1开始
    5.模糊定位模糊匹配:
    //div[contains(@class, "ng")] 定位到class属性值中包含ng的div标签
    //div[starts-with(@class, "ta")] 定位到class属性值中是以ta开头的div标签
    数据的提取:
    /text() 获取值系内容
    //text() 获取所有的内容
    /@属性名 获取属性值
  • 相关阅读:
    前端mvc mvp mvvm 架构介绍(vue重构项目一)
    SPA页面缓存再优化二
    消除浏览器对input输入框的自动填充
    单页面系统的一些性能优化
    城市联动组件插件思想分析
    前端性能优化点总结
    ui-router 1.0以上的 $stateChangeStart
    (转) view视图的放大、缩小、旋转
    (转)代码中实现button
    objective-c 强弱引用、properties的学习
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/12941418.html
Copyright © 2011-2022 走看看