当前位置:   article > 正文

python爬虫之lxml详解_python lxml

python lxml

python爬虫解析HTML也是一项重要的任务,而选择合适的解析器就显得尤为重要了,下面为大家详细解析一下lxml解析库,

我信奉的是实践出真知,你看再多语法书不如自己动手敲出来,看看它到底实现的是什么功能,这样总比看书记得更加深刻吧。

pip install lxml后,把下面代码按着一点一点的敲出来执行一下吧,看见print你就可以执行一下,相信我,很好懂的。

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Apr 26 16:29:07 2019
  4. Describe:lxml是一个Python库,使用它可以轻松处理XML和HTML文件,还可以用于web爬取。
  5. 市面上有很多现成的XML解析器,
  6. 但是为了获得更好的结果,
  7. 开发人员有时更愿意编写自己的XML和HTML解析器。
  8. 这时lxml库就派上用场了。
  9. 这个库的主要优点是易于使用,在解析大型文档时速度非常快,
  10. 归档的也非常好,并且提供了简单的转换方法来将数据转换为Python数据类型,从而使文件操作更容易。
  11. @author: Grist Cheng
  12. """
  13. from lxml import etree as et
  14. root = et.Element('html',version="5.0")
  15. #root.append(et.SubElement('style'))
  16. et.SubElement(root,'head')
  17. et.SubElement(root,'title',bgcolor="red",fontsize='22')
  18. et.SubElement(root,'body',fontsize="15")
  19. print(et.tostring(root,pretty_print=True).decode("utf-8"))
  20. for e in root:
  21. print(e.tag) #遍历root结点中的所有子结点并打印他们的标签
  22. print("**************************************1")
  23. #使用属性
  24. root.set('newAttribute','attributeValue')
  25. print(et.tostring(root,pretty_print=True).decode("utf-8"))
  26. print("**************************************2")
  27. #获取属性的值
  28. print(root.get('newAttribute'))
  29. print(root[1].get('alpha')) # access title element
  30. print(root[1].get('bgcolor'))
  31. print("**************************************3")
  32. #从元素中检索文本
  33. root.text = "This is an HTML file" #add text to the Element and SubElements
  34. root[0].text="This is the head of the file"
  35. root[1].text="This is the title of the file"
  36. root[2].text="This is the body of the file and would contain paragraphs etc"
  37. print(et.tostring(root,pretty_print=True).decode("utf-8"))
  38. print("**************************************4")
  39. #检查元素是否有子,父元素
  40. print("检查根节点是否有子节点:")
  41. if len(root) > 0: #根节点是否有子节点+
  42. print("True")
  43. else:
  44. print("False")
  45. print("检查根节点的子节点是否有子节点:")
  46. for i in range(len(root)):
  47. if(len(root[i]) > 0):
  48. print("True")
  49. else:
  50. print("False")
  51. print('\n')
  52. print("分别获取父元素:")
  53. print(root.getparent()) #根
  54. print(root[0].getparent())
  55. print(root[1].getparent())
  56. print('\n')
  57. print("检查title的同胞元素:")
  58. print(root[1].getnext())#root[1] is the title tag,this is find after the title tag
  59. print(root[1].getprevious())#find before the title tag
  60. print('\n')
  61. #解析原始xml和HTML文件
  62. print("解析原始xml和HTML文件,更改了HTML文档中的一些文本。由于我们传递给tostring函数一个xml_declaration参数,所以还自动添加了XML doctype声明:")
  63. root = et.XML('<html version="5.0" >This is an HTML file<head>This is the head of the file</head><title bgcolor="red" fontsize="22">This is the title of the file</title><body fontsize="15">This is the body of the file and would contain paragraphs etc</body></html>')
  64. root[1].text="The title text has changed!"
  65. print(et.tostring(root,xml_declaration=True).decode('utf-8'))
  66. print('\n')
  67. #寻找元素
  68. print(" 检查一些方法,通过这些方法,我们可以查看一个Element是否具有任何特定类型的子元素,以及它是否包含一些子元素。 ")
  69. print(root.find('a'))
  70. print(root.find('head').tag)
  71. print(root.findtext('title'))

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/1003802
推荐阅读
相关标签
  

闽ICP备14008679号