Python中使用xpath表达式可以轻松地实现对网页的数据进行处理和提取。下面将分为以下几个步骤介绍如何使用Python的xpath库对数据进行处理。
步骤一:获取HTML文本
要进行xpath数据处理,首先需要得到HTML文本。可以使用Python中的requests库来获取网页的HTML文本。
import requests
from lxml import etree
url = 'https://www.example.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
text = response.text
在这个示例中,我们获取了一个网页,设置了一个User-Agent作为header,这是为了避免被目标网站检测到爬虫而无法访问。这个示例中获取的text就是网页的HTML代码。
步骤二:使用xpath筛选HTML元素
在得到HTML文本之后,就可以使用xpath语法对其进行筛选和提取。使用XPath的方法是使用lxml的etree对象从文本中构建HTML文档.
html = etree.HTML(text)
result = html.xpath('xpath表达式')
在这个示例中,html即为解析过后的HTML文档,可以使用xpath表达式来查询其中的元素。xpath表达式使用方法类似于XML Path,使用一种类似于类似于路径的语法来表达XML文档中的元素,根据文档的层级结构指定要获取的元素。下面我们看一下使用xpath表达式实现数据处理的两个例子。
示例一:获取网页中的链接
我们可以使用xpath表达式获取网页中的链接,以下示例展示获取百度首页中的链接。
import requests
from lxml import etree
url = 'https://www.baidu.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
response = requests.get(url, headers=headers)
text = response.text
html = etree.HTML(text)
links = html.xpath('//a[@href]/@href')
for link in links:
print(link)
在这个示例中,我们首先访问了百度首页并获取了HTML文本。然后使用etree.HTML将文本对象构建成一个HTML对象,接着使用xpath表达式来筛选a标签下的href属性,最后循环遍历输出。
示例二:获取网页中的文本
我们还可以使用xpath表达式获取网页中的文本信息。以下示例展示如何获取知乎首页右上角的热搜标题。
import requests
from lxml import etree
url = 'https://www.zhihu.com/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
response = requests.get(url, headers=headers)
text = response.text
html = etree.HTML(text)
hot_titles = html.xpath('//div[@class="HotItem-content"]/a/@title')
for title in hot_titles:
print(title)
在这个示例中,我们使用etree.HTML将HTML文本构建成一个HTML对象,然后使用xpath表达式筛选