你也可以通过我的独立博客 —— www.huliujia.com 获取本篇文章
背景
最近因为工作需要写爬虫,以前用过BeautifulSoup,所以很自然的无脑上BeautifulSoup了,不过使用过程中发现BeautifulSoup有一个致命的缺陷,就是不能支持XPath。XPath可以快速在结构化的文档(如XML,HTML)中查找、访问元素的语言,语法比正则表达式还要简单,非常容易使用。
在浏览器中其中可以方便地获取任何目标元素的XPath,简单来说XPath和文件路径很像,通过文件路径可以快速定位文件,通过XPath可以快速定位网页中的元素。这里网页和元素的关系类似文件系统和文件的关系。当然XPath提供了更多的能力。下面就是本文的重点——lxml了。lxml提供了很多功能强大的子库,本文主要用到xlml.etree(支持XPath!支持XPath!支持XPath!,重要的事说三遍)。
先看一个简单的小例子
#!env python3
from urllib.request import urlopen
from lxml import etree
sHtml = """
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>