xpath爬虫技术分享
一、xpath技术介绍
- 首先,在python中,xpath来源于lxml包中的etree模块。xpath是一种网页数据提取对象的技术。在requests方法得到网页对象后,采用etree.HTML()方法将requests方法得到的网页文本数据提取出来并赋值给ele(自定义变量)中。进而采用xpath对网页element对象进行信息提取。
二、利用xpath进行网页数据信息提取
from lxml import etree 导入所需模块 import requests import os 用于文件写入 url='***' headers={****} response = requests.get(url,headers) response.encoding ='utf8 通常需要对网页数据进行编码 ele = etree.HTML(response.text) 使用etree方法提取将网页文本对象
以上代码是使用xpath爬虫的基础准备工作,接下来介绍xpath进行页面具体文本信息锁定的方法
- 使用开发者工具中所需标签中右键复制xpath功能快速定位所需标签。
- 找到所需标签的父级标签,使用'//'进行层级定位。
这里需要补充对于路径表达式以及模糊查询的基础知识
- / :从根节点选取
- //:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(使用时需注意所定位标签是否唯一)
- ./:当前节点再次进行xpath
- @ :选取属性
e.g.:a[@class='xxx'] :定位到class值为xxx的a标签
模糊查询主要有两种类型:
- //div/h1/text():查找所有div标签下的直接子节点h1的内容(即文本内容)
- //div/a/@href :获取a里面的href属性值(即链接url值)
注意,在使用xpath定位数据信息后,需要确定是否为列表。
三、持久化存储
这里介绍两种写文件方法:
- 创建文件夹:
if not os.path.exists(f"./{name}"): os.mkdir(f"{name}") - 写文本:
with open(f"./{name}/{page_real_name}.txt",'w',encoding='utf8')as f: for line in content_page: f.write(line.strip()+'\n')
在写文本中注意两点:1. 对于文本数据,通常采用for line in content_page形式逐行进行复制
2. 对于文本数据中出现的空格或者不合法字符,可以采用line.strip()方法进行空格删除以及正则表达式方法进行非法字符
删减
浙公网安备 33010602011771号