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

湖北网站建设平台浠水网站建设

湖北网站建设平台,浠水网站建设,军事新闻视频,seo优化前景python爬虫6#xff1a;lxml库 前言 ​ python实现网络爬虫非常简单#xff0c;只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点#xff0c;方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论#xff0c;并不会对网站产生不好…python爬虫6lxml库 前言 ​ python实现网络爬虫非常简单只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论并不会对网站产生不好影响。 目录结构 文章目录 python爬虫6lxml库1. 简介2. 使用与语法2.1 初始化2.2 方法基础2.3 寻找节点2.4 筛选节点2.5 获取属性值或文本内容 3. 总结 1. 简介 ​ lxml库是python的第三方库安装方式也是十分简单pip安装这里就不多赘述。而lxml库的特点就是简单和易上手并且解析大型文档特指xml或html文档的速度也是比较快的因此写爬虫解析网页的时候它也是我们的一个不错的选择。 ​ 这里大家需要明白一个事情解析网页其实就是去获取网页源码中的某些节点中的文本内容或属性值。举个例子比如我们爬取的是小说网站那么一般获取的是html代码中某些节点的文本值再比如我们爬取图片网站那么一般获取的是html代码中某些节点的属性值这个属性值一般为url地址但是这个地址指向的是图片内容而已。 2. 使用与语法 2.1 初始化 ​ 初始化使用lxml库的第一个步骤永远是初始化只有初始化之后我们才可以去使用它的语法。 ​ 初始化方法 html etree.HTML(text)​ 其中 text html内容的字符串 html : 一个lxml库的对象 ​ 例子 from lxml import etree #我们主要使用的lxml库中的etree库 text bodydiv classkeydiv classiocnBoxi classiconfont icon-delete/i/divdiv classempty清空/divtextarea placeholder在此述说新年寄语... rows1 classvan-field__control/textareadiv classbuts发送/div/div#开始初始化 html etree.HTML(text) #这里需要传入一个html形式的字符串2.2 方法基础 ​ lxml库的语法就是基于xpath语法来的所以会了xpath语法自然就会了lxml语法。而在lxml库中加载xpath语法的方法为html.xpath(xpath语法)。 ​ 而且观察返回的结果发现大部分返回的都是以列表的形式返回的结果这一点请注意。 2.3 寻找节点 语法含义nodename(节点名字)直接根据写的节点名字查找节点,如div//在当前节点下的子孙节点中寻找,如//div/在当前节点下的子节点中寻找,如/div.代表当前节点可省略不写就像我们有时候写的相对路径如./div…当前节点的父节点如…/div ​ 下面来个例子 from lxml import etreetext bodydiv这时测试的div/divdivdiv这是嵌套的div标签p这时嵌套的p标签/p/div/divp这时测试的p/p /body html etree.HTML(text) result html.xpath(//div) #使用xpath语法,一是在子孙节点中寻找二是寻找div的标签 print(result) #结果 #[Element div at 0x1e4cadbf608, Element div at 0x1e4cae512c8, Element div at 0x1e4cae51348]2.4 筛选节点 ​ 上面只是找到节点但是找到符合条件的结果非常多因此我们需要进行筛选工作。 ​ **重要说明**当我们使用筛选时筛选的方法都是包含在[]中括号中的。 方法集合一属性筛选: 方法名\符号作用获取属性或者筛选属性,如classcontains判断属性中是否含有某个值用于多值判断如contains(class,‘hello’) ​ 属性筛选示例 from lxml import etreetext div classhellopHello,this is used to tested/p /div div classhello test hidivdiv你好这是用于测试的html代码/div/div /divdiv classbuttondiv classmenuinput namebtn typebutton value按钮 /div /div #初始化 html etree.HTML(text) #根据单一属性筛选#筛选出classhello的div标签 hello_tag html.xpath(//div[classhello]) #注意筛选的方法都是在中括号里面的 print(hello_tag) #结果为 [Element div at 0x2ba41e6d088]即找到了一个标签符合条件#找出具有namebtn的input标签 input_tag html.xpath(//input[namebtn]) print(input_tag) #结果为[Element input at 0x1751d29df08]找到一个input标签符合条件#筛选出具有classhello的div标签 hello_tags html.xpath(//div[contains(class,hello)]) print(hello_tags) #结果为[Element div at 0x1348272d248, Element div at 0x1348272d6c8]即找到了两个div标签符合条件方法集合二按序选择: ​ 有时候我们会有这样的需求我们爬取的内容是一个table标签表格标签或者一个ul标签了解过html的应该都知道这样的标签内部还有很多标签比如table标签里就有tr、td等ul里面就有li标签等。对于这样的标签我们有时候需要选择第一个或者最后一个或者前几个等。这样的方式我们也可以实现。 方法作用last()获取最后一个标签1获取第一个标签position() num筛选多个标签具体见实例 ​ 注意这里需要注意这里的序是从1开始而不是从0开始。 from lxml import etreetext ulli1/lili2/lili3/lili4/lili5/lili6/lili7/lili8/li /ul #初始化 html etree.HTML(text)#获取第一个li标签 first_tag html.xpath(//li[1]) #令人吃惊lxml并没有first()方法 print(first_tag)#获取最后一个li标签 last_tag html.xpath(//li[last()]) print(last_tag)#获取前五个标签 li_tags html.xpath(//li[position() 6]) print(li_tags)方法集合三逻辑和计算 ​ 其实在写筛选时是可以加入逻辑方法的如and、or、、等。当然也是可以写入一些计算方法的如、-等。 ​ 下面给出示例 from lxml import etreetext ulli1/lili2/lili3/lili4/lili5/lili6/lili7/lili8/li /ul #初始化 html etree.HTML(text)#获取第二个li标签使用判断 second_tag html.xpath(//li[position() 2]) print(second_tag)#获取第一个和第二个标签使用or tags html.xpath(//li[position() 1 or position() 2]) print(tags)#获取前三个标签使用 three_tags html.xpath(//li[position()4]) print(three_tags)2.5 获取属性值或文本内容 ​ 我们寻找标签、筛选标签的最终目的就是获取它的属性或者文本内容。下面讲解获取文本和属性的方法。 方法作用获取属性或者筛选属性text()获取文本 ​ 举个例子 from lxml import etreetext div classhellopHello,this is used to tested/p /div div classhello test hidivdiv你好这是用于测试的html代码/div/div /divdiv classbuttondiv classmenuinput namebtn typebutton value按钮 /div /div #初始化 html etree.HTML(text)#获取第一个div中的p标签中的文本 content html.xpath(//div/p/text()) #注意使用text()的时机和位置 print(content) #结果为[Hello,this is used to tested]仍然是以列表形式返回结果#获取拥有第二个div中的文本,注意观察下面的不同之处 content_two html.xpath(//div[position() 2]/text()) print(content_two) #结果为 [\n , \n]content_three html.xpath(//div[position() 2]//text()) print(content_three) #结果为 [\n , \n , 你好这是用于测试的html代码, \n , \n] #两者不同之处在于一个为//一个为/。我们知道//获取其子孙节点中的内容而/只获取其子节点的内容。​ 获取属性示例 from lxml import etreetext div classhello nametestpHello,this is used to tested/p /div div classhello test hidivdiv你好这是用于测试的html代码/div/div /divdiv classbuttondiv classmenuinput namebtn typebutton value按钮 /div /div #初始化 html etree.HTML(text)#获取第一个div的name属性 first_div_class html.xpath(//div[classhello]/name) print(first_div_class) #结果为[test]#获取input标签的name值 input_tag_class html.xpath(//input/name) print(input_tag_class) #结果为[btn]3. 总结 ​ 本篇内容为大家介绍了python爬虫解析库中最为常用的lxml库其核心的内容在于获取节点、筛选节点、获取节点文本或属性值。 ​ 下一篇会以之前讲解的requestslxml进行一个实战。
http://www.w-s-a.com/news/457672/

相关文章:

  • 国外做珠宝的网站有哪些滨湖区建设局官方网站
  • 关于中国幼教网站开发的经验中国建设银行晋中分行网站
  • 挪威网站后缀如何外贸网络推广
  • 外汇交易网站开发仟亿家设计软件好吗亿家
  • 专门教做甜品的网站郑州高新区建设环保局网站
  • 建站公司怎么获客网站建设全网营销
  • 黄石做网站的公司html免费网站模板
  • 做个商城网站怎么做便宜优酷视频网站源码
  • 网站侧边栏导航代码泰兴市住房和建设局网站
  • html网站登录界面模板确定建设电子商务网站目的
  • wordpress 多站点迁移三台网站seo
  • 工信部网站备案文件好网站建设公司地址
  • 怎么做app和网站购物网站单页面怎么做的
  • 西宁专业做网站教育网站建设策划书
  • 个人网站域名怎么起网站建设业务好跑吗
  • 网页设计的网网页设计的网站企业网站怎样做优化
  • 论文中小企业的网站建设域名网站空间
  • 宿迁网站建设联系电话现在出入邯郸最新规定
  • 男女做羞羞的事情网站30岁转行做网站编辑
  • 做企业网站的轻量级cmswordpress 越来越慢
  • 无锡中英文网站建设莱芜网络公司
  • ps软件下载官方网站相关搜索优化软件
  • 世界杯网站源码下载做网站推广代理
  • 用股票代码做网站的wordpress通过标签调用文章
  • iis添加网站ip地址树莓派运行wordpress
  • 网站空间域名多少钱宿迁做网站公司
  • 福州建设企业网站网站交互主要做什么的
  • 英文网站建设方法门户网站特点
  • 腾讯云备案 网站名称萧山城市建设网站
  • 漳浦网站建设网络营销推广策略