网络爬虫与前端网页基础

发布时间:2026/8/17 19:40:04
网络爬虫与前端网页基础 1. 爬虫定义爬虫又称为网络爬虫网络机器人是一种按照一定的预设规则自动浏览并抓取网络数据的程序或脚本2.爬虫运行流程数据清洗是指对采集到的原始数据进行处理、修正、转换和标准化的过程目的是让数据变得规范准确3.robots 协议robots 协议又称爬虫协议是指网站根目录下存放的一份文本文件 robots.txt用于告诉爬虫哪些页面可以抓取哪些页面不能抓取。君子协议无强制约束User - Agent用户代理通过该请求头确认爬虫的类型Disallow禁止访问的资源Allow允许访问的资源Sitemap网站地图帮助爬虫更高效地获取网站内容Craw - delay爬虫抓取间隔时间避免频繁访问造成网站压力过大例如百度的 robots.txt 文档可以看到其对于除指定爬虫外的所有爬虫都禁止访问网站资源小结4.爬虫入门程序程序功能需求获取 TIOBE 编程语言排行榜单4.1 操作步骤1.查看 TIOBE 网站的 robots.txt 文件明确资源获取规则2.安装 requests 库用于发送网络请求pip install requests3.编写 python 代码访问 TIOBE 网站获取数据4.1.1 查看 robots.txt 文件对于所有的爬虫禁止访问 /wp-admin 目录下的资源/wp-admin/admin-ajax.php除外可知我们要访问的资源并未被禁止因此爬虫是可以访问的4.1.2 安装 requests 库requests 库 是 Python 最流行的HTTP 网络请求库用来写代码访问网页、调用接口、拿网络数据做爬虫、调用大模型 API、后端接口调用几乎必用。命令行执行以下代码pip install requests4.1.3 编写 python 代码import requests from lxml import html #定义URL URL https://www.tiobe.com/tiobe-index/ #发送请求获取数据response对象 response requests.get(URL) #解析html doc html.fromstring(response.text) #解析表头 th_list doc.xpath(//table[idtop20]/thead/tr/th/text()) print(th_list) #解析表格数据 tr_list doc.xpath(//table[idtop20]/tbody/tr) for tr in tr_list: td_list tr.xpath(./td/text()) print(td_list)获取到的response 结果如下返回的即是前端网页的源代码返回的表头以及表格数据如下所示5.前端网页结构5.1 概述一个网页是由三个部分构成的分别是HTMLCSSJSJavaScriptHTML超文本标记语言由一堆预设的标签h1一级标题/h1构成。HTML负责网页的结构页面元素和内容CSS层叠样式表。CSS负责网页的表现页面元素的外观位置等样式如颜色大小等JavaScript负责网页的交互逻辑点击、弹窗、请求后端接口网页示例html langzh-CN head meta charsetUTF-8 meta nameviewport contentwidthdevice-width, initial-scale1.0 title仙逆人物志 - 修真世界/title style .title { font-size: 30px; font-weight: bold; color: #ffd700; transition: color 0.3s ease; /* 添加颜色过渡效果 */ } /style /head body div classcontent nav classtop-nav h1 classtitle仙逆人物志 - 修真界档案系统/h1 /nav footer classfooter div classcontainer p© 2026 仙逆人物志 - span修真界档案系统/span/p p探索修真世界的奥秘记录修仙路上的传奇/p /div /footer /div script document.title 仙逆人物志 - 修真世界; const titleElement document.querySelector(.title); // 获取标题元素 titleElement.addEventListener(mouseenter, function () { // 鼠标进入标题时改变颜色 this.style.color #ff6600; // 改为橙红色 }); titleElement.addEventListener(mouseleave, function () { // 鼠标离开标题时恢复原色 this.style.color #ffd700; // 恢复金黄色 }); /script /body /html文件保存后将后缀改为 .html双击用浏览器打开就能运行5.2 HTMLHTMLHyperText Markup Language超文本标记语言超文本超越了文本限制比普通文本更加强大。除了文字信息还可以定义图片音频视频等内容标记语言由标签 “标签名” 构成的语言HTML标签都是预定好的不能随便写。例如使用 h1 展示标题使用 image 展示图片使用 video 展示视频HTML代码直接在浏览器中运行HTML标签由浏览器进行解析HTML标签可以嵌套HTML标签有两类开始标签 标签名 和结束标签 /标签名大部分标签是成对出现的有一部分是单标签自闭合标签标签属性的格式键值对形式即 key value5.3 小结6.网页解析6.1 网络解析定义网页解析指的是从原始HTML文档中提取数据的过程也是网络爬虫的关键步骤从一堆标签文本中提取需要的数据6.2 lxml库6.2.1 lxml概述lxml库是一个高性能的HTML/XML 文档的解析库支持基于 Xpath 语法来解析和获取网页数据lxml库的安装pip install lxmlXpath是一种用于在 HTML/XML 文档中导航或定位元素的查询语言让你能够准确的定位文档中的特定元素属性或文本6.2.2 常用导入常用导入from lxml import htmllxml.htmlHTML 专用容错强自带.xpath()日常爬虫首选6.2.3 常用Xpath语法Xpath是一种用于在 HTML/XML 文档中导航或定位元素的查询语言让你能够准确的定位文档中的特定元素属性或文本。前提doc html.fromstringhtml文本然后 doc.xpath“表达式”返回结果永远是列表没匹配到返回[ ]其常用语法如下注意查找索引从1开始而不是常见的从0开始小结6.2.4 示例写法from lxml import html #读取html文件 with open (resources/仙逆人物志.html,r,encoding utf-8) as f: html_text f.read() # 1.解析html文本将其转换为一个文档对象 doc html.fromstring(text) # 2. XPath提取 #2.1 解析表头 th_list doc.xpath(//table/thead/te/th/text()) #2.2 解析表格中数据 #获取第一行数据 td_list1 doc.xpath(//table/tbody/tr[1]/td/text()) #获取倒数第一行数据 td_list2 doc.xpath(//table/tbody/tr[last()]/td/text()) #获取倒数第二行数据 td_list3 doc.xpath(//table/tbody/tr[last()-1]/td/text()) #获取所有行数据 tr_list4 doc.xpath(//table/tbody/tr) for tr in tr_list: td_list tr.xpath(./td/text()) #获取tr标签下的任意元素的数据 tr_list5 doc.xpath(//table/tbody/tr/*/text()) #获取有指定属性的标签数据 p_list1 doc.xpath(//p[class]/text()) #获取有指定属性以及指定值的标签数据 p_list2 doc.xpath(//p[classxn]/text()) #获取指定标签的所有属性 a_list doc.xpath(//td/image/*)6.2.5 Xpath路径的获取方式6.2.5.1 手动获取根据 response 返回的前端源码查询到要提取的数据观察源码结构手动输入路径如下图所示其xpath路径为//tabel[idtop20]/thead/tr/th/text()6.2.5.2 网页自动查询使用 DevTools 工具栏中的 “元素” 进行获取当鼠标指针停留在相应代码处时对应网页页面的元素会高亮显示如下图所示找到要查询信息的代码处右键选择复制然后选择复制Xpath或复制完整Xpath即可自动获得Xpath路径获取到的数据地址//*[idtop20]/thead/tr/th[3]