ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python selenium

2021-08-04 10:33:54  阅读:190  来源: 互联网

标签:xpath Python text selenium tree soup 标签 div


数据解析

  • response 方法
    • content 返回二进制响应数据
    • text 返回字符串
    • json() 返回json对象

正则

  • re.S 单行匹配
  • re.M 多行匹配
    img_src_list = re.findall(ex,img_data,re.S)

bs4数据解析

数据解析的原理
  • 1.标签定位
  • 2.提取标签、标签属性中存储的数据值

bs4数据解析的原理:

  • 1.实例化一个BeautifulSoup对象,并将页面源码数据加载到该对象中
  • 2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取
对象的实例化:
  • 本地html文档数据加载
    • fp = open('xx.html','r',encoding = 'utf-8')
    • soup = BeautifulSoup(fp,'lxml')
  • 页面源码加载
    • page_text = response.text
    • soup = BeautifulSoup(page_text,'lxml')
  • 使用lxml解析器
bs4方法属性
  • soup.tagName 返回第一次出现的tagName标签
    -print(soup.a)\soup.div\soup.p ...
  • soup.find('div')
    • 等同于soup.div\print(soup.find('div'))
    • 属性定位
      • soup.find('div',class_/id/attr = 'xxx')
      • 返回目标标签
  • soup.findall('tagName')
    • 返回符合要求的所有标签(列表)
  • soup.select()
    • 类选择器 soup.select('.xxx'),('.'类选择器)
      • id,class, 标签...选择器,(返回列表)
    • 标签选择soup.select('xxx')
    • 层级选择器
      • soup.select('.xxx > div > l > a')[0] //>表示的是一个层级
      • soup.select('.xxx > div a')[0]空格表示多个层级
  • 获取标签间文本数据
    • soup.a.text/string/get_text()
      • text/get_text() 可以获取一个标签中所有的文本内容(子标签)
      • string 只可以获取标签下直系文本内容
  • 获取标签中的属性值
    • soup.select('.xxx > div > l > a')[0]['href']

xpath解析

  • 实例化etree对象

    • tree = etree.parse('x.html')//filepath
    • tree = etree.HTML('xxx_text')
  • 标签定位 :

    • tree.xpath('/html/head/title')

    • tree.xpath('/html//title')

    • tree.xpath('//title')

    • 返回Element类型对象列表

    • /:表示的是从根节点进行定位,表示一个层级

    • //: 表示多个层级,可以表示从任意位置开始定位'//div'

  • 属性定位

    • tree.xpath('//div[@class="ss"]')
  • 索引定位

    • tree.xpath('//div[@class="ss"]/p[3]') 索引从1开始
  • 取文本

    • /text() 获取标签中直系的文本内容
    • //text() 标签中非直系文本内容(所有文本内容)
  • 取属性

    • /@attrName ==>img/src
  • tree.xpath('/html/head/title | //title') // '|' 将多个结果合并

  • tree.xpath 返回etree类型列表 可对子tree进行xpath解析 './'继承父结果

    • city_name_list = tree.xpath('//div[@class="bottom"]/ul/li')
      for city in city_name_list:
          c = city.xpath('./a/text()')
          #相当于'//div[@class="bottom"]/ul/li/a/text()'
      
      
      

-编码错误解决方法

  • encode('iso-8859-1').decode('gbk')
  • encode('iso-8859-1').decode('utf-8')

标签:xpath,Python,text,selenium,tree,soup,标签,div
来源: https://www.cnblogs.com/w0000/p/15097695.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有