当前位置: 首页 > news >正文

齐齐哈尔建设局网站上海建网站开发公

齐齐哈尔建设局网站,上海建网站开发公,信息网站建设方案,做网站具备的条件parsel 这个库可以对 HTML 和 XML 进行解析,并支持使用 XPath 和 CSS Selector 对内容进行提取和修改,同时它还融合了正则表达式提取的功能。 内容目录 from parsel import Selector提取节点提取 class 包含 item-0 的节点 提取文本获取提取到的所有 li…

parsel 这个库可以对 HTML 和 XML 进行解析,并支持使用 XPath 和 CSS Selector 对内容进行提取和修改,同时它还融合了正则表达式提取的功能。

内容目录

  • from parsel import Selector
  • ==提取节点==
    • 提取 class 包含 item-0 的节点
  • ==提取文本==
    • 获取提取到的所有 li 节点的文本内容
    • 提取文本时get 和 getall 的区别
  • ==提取属性==

from parsel import Selector

提取节点

提取 class 包含 item-0 的节点

python3环境下输入:

html = '''
<div><ul><li class="item-0">first item</li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li><li class="item-1 active"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></li></ul></div>
'''
from parsel import Selector
selector = Selector(text=html)   # 将 HTML 字符串,赋值为 selector 变量
# print(selector)# 提取 class 包含 item-0 的节点
# css方法
items = selector.css('.item-0')
print(len(items), type(items), items)   # 结果是一个可迭代对象 SelectorList
# xpath方法
items2 = selector.xpath('//li[contains(@class, "item-0")]')
print(len(items2), type(items2), items2)

知识点:

  1. 将 HTML 字符串,赋值为 selector 变量:selector = Selector(text=html)。
  2. css方法提取 class 包含 item-0 的节点:selector.css(‘.item-0’)。
  3. xpath方法提取 class 包含 item-0 的节点:selector.xpath(‘//li[contains(@class, “item-0”)]’)。
  4. 两种方法返回的结果都是一个可迭代对象 SelectorList,长度都为3,具体结果看输出。

结果输出为:

3 <class 'parsel.selector.SelectorList'> [<Selector xpath="descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' item-0 ')]" data='<li class="item-0">first item</li>\n  ...'>, <Selector xpath="descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' item-0 ')]" data='<li class="item-0 active"><a href="li...'>, <Selector xpath="descendant-or-self::*[@class and contains(concat(' ', normalize-space(@class), ' '), ' item-0 ')]" data='<li class="item-0"><a href="link5.htm...'>]
3 <class 'parsel.selector.SelectorList'> [<Selector xpath='//li[contains(@class, "item-0")]' data='<li class="item-0">first item</li>\n  ...'>, <Selector xpath='//li[contains(@class, "item-0")]' data='<li class="item-0 active"><a href="li...'>, <Selector xpath='//li[contains(@class, "item-0")]' data='<li class="item-0"><a href="link5.htm...'>]

提取文本

获取提取到的所有 li 节点的文本内容

for item in items:text = item.xpath('.//text()').get()  # 仍是一个可迭代对象 SelectorListprint(text)

知识点:

遍历 items , 利用xpah 提取所有 li 节点的文本内容:text = item.xpath(‘.//text()’).get() ,结果如下。

结果输出为:

first item
third item
fifth item

提取文本时get 和 getall 的区别

# 提取 SelectorList 里面对应的结果,可以使用 get 或 getall 方法 
# xpath 方法
result = selector.xpath('//li[contains(@class, "item-0")]//text()').get()
print(result)    
result = selector.xpath('//li[contains(@class, "item-0")]//text()').getall()
print(result)
# css 方法
result = selector.css('.item-0 *::text').get()  # *用来提取第一个子节点
print(result)
result = selector.css('.item-0 *::text').getall()  # *用来提取所有子节点
print(result)

知识点:

get 和 getall 对于xpath和css都通用。
get() :用来提取第一个子节点
getall() :用来提取所有子节点

结果输出为:

first item
['first item', 'third item', 'fifth item']
first item
['first item', 'third item', 'fifth item']

提取属性

# 提取属性########################################
result = selector.css('.item-0.active a::attr(href)').get()
print(result)
result = selector.xpath('//li[contains(@class, "item-0") and contains(@class, "active")]/a/@href').get()
print(result)
result = selector.css('.item-0').re('link.*')  
# re 方法在这里遍历了所有提取到的 Selector 对象,然后根据传入的正则表达式查找出符合规则的节点源码并以列表的形式返回。
print(result)
result = selector.css('.item-0 *::text').re('.*item')  
# 调用 css 方法时已经提取了进一步的结果,比如提取了节点文本值,那么 re 方法就只会针对节点文本值进行提取
print(result)
result = selector.css('.item-0').re_first('<span class="bold">(.*?)</span>')   # 输出的结果就是小括号部分对应的结果
print(result)

结果输出为:

link3.html
link3.html
['link2.html">second item</a></li>', 'link3.html"><span class="bold">third item</span></a></li>', 'link4.html">fourth item</a></li>', 'link5.html">fifth item</a></li>', 'link3.html"><span class="bold">third item</span></a></li>', 'link4.html">fourth item</a></li>', 'link5.html">fifth item</a></li>', 'link5.html">fifth item</a></li>']
['first item', 'third item', 'fifth item']
third item
http://www.hyszgw.com/news/78040.html

相关文章:

  • 青岛网站建设多少钱北京西站电话
  • 做行业网站中国建设工程信息网站
  • 国外 创意 网站ps做图游戏下载网站有哪些内容
  • 网站开发与设计作业软件库网站大全
  • 主流网站模板wordpress博客没有找到
  • 网站建设需要什么网站优化外包推荐
  • sqlite做网站数据库自考大型网站开发工具
  • 网站设计 书籍校园网站做自己的广告
  • 石家庄网站建设时光wordpress问答社区模板
  • 网站的维护与更新互联网营销公司
  • 网站开发 华景新城百度输入法免费下载
  • 河南手机网站建设公司哪家好音乐展示网站建设平台
  • asp flash网站源码python 爬虫 做网站
  • 快手刷粉网站推广pageadmin系统
  • 海南网站建设中心辽宁建设工程质量监督站网站
  • 怎样做私人网站邯郸网站设计招聘
  • 网站分为四个步骤开发建设做国外网站汇款用途是什么
  • 成都协会网站建设成都网站建设设计公司
  • 多肉建设网站前的市场分析网站开发建设付款方式
  • 长沙建网站培训企业管理信息系统案例
  • 网站一次性链接怎么做的电商论坛网站模板
  • 完整网站开发需要多久ae做网站导航
  • 这么做3d展示网站seo研究中心怎么样
  • 益阳市建设局网站是什么百度官方营销推广平台官网
  • 网站开发 百度编辑器网页建设哪里最便宜
  • 电子商务网站调研报告石家庄搭建公司
  • wordpress导出静态网站陕西省建设监理协会网站主页
  • 网站建设有哪些板块西安信誉好的做网站的
  • 工作正能量励志句子seo发展现状
  • 重庆网站seo排名昆山建站公司