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功能快速定位所需标签。
  • 找到所需标签的父级标签,使用'//'进行层级定位。
    这里需要补充对于路径表达式以及模糊查询的基础知识
  1. / :从根节点选取
  2. //:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置(使用时需注意所定位标签是否唯一)
  3. ./:当前节点再次进行xpath
  4. @ :选取属性
    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()方法进行空格删除以及正则表达式方法进行非法字符
    删减
posted @ 2025-02-27 14:15  瑞迹Ack  阅读(22)  评论(0)    收藏  举报