Python之XPath实现小说爬取

XPath介绍

XPath 即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。

XPath节点操作

XPath语法
它使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
下面列出了最有用的路径表达式:
Python之XPath实现小说爬取_第1张图片实例
Python之XPath实现小说爬取_第2张图片用谓语来查找某个特定的节点或者包含某个指定的值的节点,嵌在方括号中。
实例
Python之XPath实现小说爬取_第3张图片

XPath在Python爬虫中的应用

xpath的安装
xpath在Python中有一个第三方库,支持~ lxml
pip install wheel
pip install lxml
xpath的使用
获取文本内容用 text(),string()
获取注释用 comment()
获取其它任何属性用@xx,如
@href
@src
@value
其中text()和string略有不同,text()它仅仅返回所指元素的文本内容,string()函数会得到所指元素的所有节点文本内容,这些文本讲会被拼接成一个字符串。string(.)表示当前节点。

爬取小说案例

import urllib,urllib.request,re
from urllib.request import Request
from lxml import etree
#爬取数据
def getText(url,file_name):
	print('开始爬取第%s章的内容'%file_name)
	#伪装请求头
	my_headers = {
		'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36'
	}
	request = urllib.request.Request(url,headers=my_headers)
	content = urllib.request.urlopen(request).read()
	return content
#保存数据
def save(content):
	xml = etree.HTML(content)
	'''
	xpath路径获取:
	浏览器打开页面,选中要爬取部分标签,选择copy->cope xpath
	'''
	datas = xml.xpath('/html/body/div[@id="main"]/h1 | /html/body/div[@id="main"]/p')
	data = datas[2].xpath('string(.)').encode('utf-8')
	name = datas[0].xpath('string(.)')
	print(name)
	print('第%s章的内容爬取完成'%file_name)
	with open('txt/%s'%name+'.txt','wb') as f:
		f.write(data)
#定义主程序接口
if __name__ == '__main__':
	x = 41277
	while x

结果:
Python之XPath实现小说爬取_第4张图片

你可能感兴趣的:(python)