外观
XPath常见错误
- Unregistered Function:未注册该函数。
- Invalid Predicate:无效谓词。
- Unfinished Literal:表达式不完整。
使用Python解析HTML
Python解析HTML的库有lxml、BeautifulSoup4、pyquery等。第一个主要提供XPath语法的选择器,第二个则依赖Python标准库,提供了节点选择器,第三个提供CSS选择器。
使用这以下的代码分别安装这三个模块。
pip install lxml
pip install bs4
pip install pyquery下面的代码将尝试用这三个库提取如下HTML代码中的这段话。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>标题</title>
</head>
<body>
<p>这是网页中的一段话。</p>
</body>
</html>- lxml
#/html/body/p
from lxml import etree
html = """<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>标题</title>
</head>
<body>
<p>这是网页中的一段话。</p>
</body>
</html>"""
xp = etree.HTML(html)
items = xp.xpath('//html//body//p//text()')
print(items)['这是网页中的一段话。']- BeautifulSoup4
#/html/body/p
from bs4 import BeautifulSoup
html = """<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>标题</title>
</head>
<body>
<p>这是网页中的一段话。</p>
</body>
</html>"""
bs = BeautifulSoup(html, 'lxml')
items = bs.select('p')
print(items)[<p>这是网页中的一段话。</p>]- pyquery
from pyquery import PyQuery as query
html = """<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>标题</title>
</head>
<body>
<p>这是网页中的一段话。</p>
</body>
</html>"""
pq = query(html)
items = pq('p')
print(items)<p>这是网页中的一段话。</p>