首页 > 其他分享 >寒假生活指导14

寒假生活指导14

时间:2024-01-22 19:12:26浏览次数:28  
标签:14 标签 指导 find li soup 寒假 print id

XPATH语法:

   1.路径查询

        //:查找所有子孙节点,不考虑层级关系     

       / :找直接子节点     

  2.谓词查询      

   //div[@id]        

   //div[@id="maincontent"]      

   3.属性查询    

     //@class         

    4.模糊查询   

      //div[contains(@id, "he")]      

      //div[starts‐with(@id, "he")]   

   5.内容查询    

     //div/h1/text()    

 6.逻辑运算     

    //div[@id="head" and @class="s_down"]    

     //title | //price

from lxml import etree

# xpath解析
# (1)本地文件                                                etree.parse
# (2)服务器响应的数据  response.read().decode('utf-8') *****   etree.HTML()

# xpath解析本地文件
tree = etree.parse('070_爬虫_解析_xpath的基本使用.html')

#tree.xpath('xpath路径')

# 查找ul下面的li
# li_list = tree.xpath('//body/ul/li')


# 查找所有有id的属性的li标签
# text()获取标签中的内容
# li_list = tree.xpath('//ul/li[@id]/text()')

# 找到id为l1的li标签  注意引号的问题
# li_list = tree.xpath('//ul/li[@id="l1"]/text()')

# 查找到id为l1的li标签的class的属性值
# li = tree.xpath('//ul/li[@id="l1"]/@class')

# 查询id中包含l的li标签
# li_list = tree.xpath('//ul/li[contains(@id,"l")]/text()')

# 查询id的值以l开头的li标签
# li_list = tree.xpath('//ul/li[starts-with(@id,"c")]/text()')

# 查询id为l1和class为c1的
li_list = tree.xpath('//ul/li[@id="l1" and @class="c1"]/text()')

# li_list = tree.xpath('//ul/li[@id="l1"]/text() | //ul/li[@id="l2"]/text()')

# 判断列表的长度
print(li_list)
print(len(li_list))

jsonpath语法:

链接csdn

bs4语法:

根据标签名查找节点

        soup.a 【注】只能找到第一个a

            soup.a.name

            soup.a.attrs

2.函数         

(1).find(返回一个对象)

           find('a'):只找到第一个a标签

            find('a', title='名字')

           find('a', class_='名字')         

(2).find_all(返回一个列表)                   

find_all('a')  查找到所有的a                   

find_all(['a', 'span'])  返回所有的a和span                   

find_all('a', limit=2)  只找前两个a        

# (1)find
# 返回的是第一个符合条件的数据
# print(soup.find('a'))

# 根据title的值来找到对应的标签对象
# print(soup.find('a',title="a2"))

# 根据class的值来找到对应的标签对象  注意的是class需要添加下划线
# print(soup.find('a',class_="a1"))


# (2)find_all  返回的是一个列表 并且返回了所有的a标签
# print(soup.find_all('a'))

# 如果想获取的是多个标签的数据 那么需要在find_all的参数中添加的是列表的数据
# print(soup.find_all(['a','span']))

# limit的作用是查找前几个数据
# print(soup.find_all('li',limit=2))

 

 

(3).select(根据选择器得到节点对象)【推荐】                   

# (3)select(推荐)
# select方法返回的是一个列表  并且会返回多个数据
# print(soup.select('a'))

# 可以通过.代表class  我们把这种操作叫做类选择器
# print(soup.select('.a1'))

# print(soup.select('#l1'))


# 属性选择器---通过属性来寻找对应的标签
# 查找到li标签中有id的标签
# print(soup.select('li[id]'))

# 查找到li标签中id为l2的标签
# print(soup.select('li[id="l2"]'))


# 层级选择器
#  后代选择器
# 找到的是div下面的li
# print(soup.select('div li'))

# 子代选择器
#  某标签的第一级子标签
# 注意:很多的计算机编程语言中 如果不加空格不会输出内容  但是在bs4中 不会报错 会显示内容
# print(soup.select('div > ul > li'))


# 找到a标签和li标签的所有的对象
# print(soup.select('a,li'))

# 节点信息
#    获取节点内容
# obj = soup.select('#d1')[0]
# 如果标签对象中 只有内容 那么string和get_text()都可以使用
# 如果标签对象中 除了内容还有标签 那么string就获取不到数据 而get_text()是可以获取数据
# 我们一般情况下  推荐使用get_text()
# print(obj.string)
# print(obj.get_text())

# 节点的属性
# obj = soup.select('#p1')[0]
# name是标签的名字
# print(obj.name)
# 将属性值左右一个字典返回
# print(obj.attrs)

# 获取节点的属性
obj = soup.select('#p1')[0]

print(obj.attrs.get('class'))
print(obj.get('class'))
print(obj['class'])

 

标签:14,标签,指导,find,li,soup,寒假,print,id
From: https://www.cnblogs.com/syhxx/p/17980768

相关文章

  • 语音合成技术(深度学习方法简介)https://www.cnblogs.com/jacen789/p/14260194.html
    语音合成技术(深度学习方法简介)一、定义语音合成(Text-To-Speech,简称TTS),又称文语转换技术,是将文字信息转变为可以听得懂的、流利的语音输出的一种技术。其与我们比较熟悉的语音识别技术(AutomaticSpeechRecognition,简称ASR)目标相反。ASR是将声音转化为文字,类比于人类的耳朵;而TT......
  • 4147:汉诺塔问题(Tower of Hanoi)C++
    递归C和C++一样,就写个C++了。#include<iostream>usingnamespacestd;voidmove(intn,chara,charb,charc){if(n<=0)return;move(n-1,a,c,b);cout<<n<<":"<<a<<"->"<<c<<'\n�......
  • P1914 小书童——凯撒密码
    1.题目介绍小书童——凯撒密码题目背景某蒟蒻迷上了“小书童”,有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你。题目描述蒟蒻虽然忘记密码,但他还记得密码是由一个字符串组成。密码是由原文字符串(由不超过50个小写字母组成)中每个字母向后移动\(n\)......
  • 接口自动化测试实践指导(上):接口自动化需要做哪些准备工作
    接口自动化测试实践指导(上):接口自动化需要做哪些准备工作 1.为什么做接口自动化1.1什么是接口测试接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以......
  • 接口自动化测试实践指导(中):接口测试场景有哪些
    接口自动化测试实践指导(中):接口测试场景有哪些1接口测试场景梳理1.1设计思路在接口测试中,很大程度上,我们的测试质量依赖于接口测试场景的设计,而接口的测试场景和传统的功能测试场景又有所不同,不少测试同学一时无法很好的转换,一上来进行接口测试思路上会比较乱,这里呢给大家梳......
  • 初学者如何学习编程(从2014到2023年十年编程工作总结)
    今天给大家分享一个话题,如何有效的学习编程,大家都知道,我是计算机专业毕业的,2008年开始学习编程,2014年研究生毕业后一直从事软件开发工作,先后在京东、爱奇艺、完美世界从事过软件开发工程师工作,具有十多年编程经验积累,所以我来讲这个话题,我是有发言权的,也具有一定的权威性。好的......
  • day40 如何运维管理超1k+node节点 - 站在面试官角度谈面试 (13-14)
    13、如何运维管理超1k+node节点(四节)一、数据背景100,000+Pods1300+Nodes3集群(单:11Master+17ETCD)ToC服务行业二、瓶颈问题Apiserver调度,延迟问题;Controller不能及时从APIServer感知到最新的变化,处理的延时较高;Scheduler延迟高、吞吐低,无法适应业务日常需求;ET......
  • Go语言核心36讲 14 | 接口类型的合理运用
    你好,我是郝林,今天我们来聊聊接口的相关内容。前导内容:正确使用接口的基础知识在Go语言的语境中,当我们在谈论“接口”的时候,一定指的是接口类型。因为接口类型与其他数据类型不同,它是没法被实例化的。更具体地说,我们既不能通过调用new函数或make函数创建出一个接口类型的值,也......
  • 寒假集训总结
    拓扑排序差分约束要求构造长度为\(n\)的序列使其满足\(m\)条形如\(a_i-a_j\lex_k\)或\(a_i<a_j\)的约束。对于每个约束\(a_i-a_j\lex_k\)由\(j\)向\(i\)连一条长度为\(x_k\)的有向边,若图中存在负环,则无解。若约束全部为\(a_i<a_j\)形式(即\(x\)......
  • 1.21寒假每日总结12
    思路&&Code12345678910111213141516171819202122232425262728293031323334353637/*高桥和青木N场比赛x      y得分情况分别为x1y1              ...                ..  ......