这里写自定义目录标题
xpath简介
XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言。它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索。
所以在做爬虫时,我们完全可以使用XPath来做相应的信息抽取。
XPath的选择功能十分强大,它提供了非常简洁明了的路径选择表达式。另外,它还提供了超过100个内建函数,用于字符串、数值、时间的匹配以及节点、序列的处理等。几乎所有我们想要定位的节点,都可以用XPath来选择。
XPath常用规则
下图列举了XPath的几个常用规则。
这里列出了XPath的常用匹配规则,示例如下:
//title[@class='env']
这就是一个XPath规则,它代表选择所有名称为title,同时属性class的值为env的节点。
后面会通过Python的lxml库,利用XPath进行丁香网论坛评论的爬取。
爬取论坛丁香网的源码
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# __author__ = "bravexz"
# Date: 19-3-4
import requests
from lxml import etree
def get_html(url):
headers ={
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36'
}
res = requests.get(url,headers = headers)
res.encoding = res.apparent_encoding
return res.text
# print(res.text)
def parse_html(res):
data =[]
new_data =[]
html = etree.HTML(res)
result_name = html.xpath('//div[@class="auth"]/a/text()')
result_data = html.xpath('//td[@class="postbody"]/text()')
for i in range(0,int(len(result_name))):
data.append(result_name[i]+"++++++++"+result_data[i])
for i in data:
new =i.replace("\n","").replace("\t","").replace(" ","")
new_data.append(new)
print(new_data)