千家信息网

Python中关于数据采集和解析是怎样的

发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,本篇文章为大家展示了Python中关于数据采集和解析是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。我们已经了解到了开发一个爬虫需要做的工作以及一些常见
千家信息网最后更新 2025年01月26日Python中关于数据采集和解析是怎样的

本篇文章为大家展示了Python中关于数据采集和解析是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

我们已经了解到了开发一个爬虫需要做的工作以及一些常见的问题,下面我们给出一个爬虫开发相关技术的清单以及这些技术涉及到的标准库和第三方库,稍后我们会一一介绍这些内容。

  1. 下载数据 - urllib / requests / aiohttp。

  2. 解析数据 - re / lxml / beautifulsoup4 / pyquery。

  3. 缓存和持久化 - pymysql / sqlalchemy / peewee/ redis / pymongo。

  4. 生成数字签名 - hashlib。

  5. 序列化和压缩 - pickle / json / zlib。

  6. 调度器 - 多进程(multiprocessing) / 多线程(threading)。

HTML页面

  Home    

Yoko's Kitchen

Bok Choi
Bok Choi

Japanese Vegetarian

Five week course in London

A five week introduction to traditional Japanese vegetarian meals, teaching you a selection of rice and noodle dishes.

Teriyaki sauce
Teriyaki Sauce

Sauces Masterclass

One day workshop

An intensive one-day course looking at how to create the most delicious sauces for use in a range of Japanese cookery.

© 2011 Yoko's Kitchen

如果你对上面的代码并不感到陌生,那么你一定知道HTML页面通常由三部分构成,分别是用来承载内容的Tag(标签)、负责渲染页面的CSS(层叠样式表)以及控制交互式行为的JavaScript。通常,我们可以在浏览器的右键菜单中通过"查看网页源代码"的方式获取网页的代码并了解页面的结构;当然,我们也可以通过浏览器提供的开发人员工具来了解更多的信息。

使用requests获取页面

  1. GET请求和POST请求。

  2. URL参数和请求头。

  3. 复杂的POST请求(文件上传)。

  4. 操作Cookie。

  5. 设置代理服务器。

【说明】:关于requests的详细用法可以参考它的官方文档。

页面解析

几种解析方式的比较

说明:BeautifulSoup可选的解析器包括:Python标准库(html.parser)、lxml的HTML解析器、lxml的XML解析器和html5lib。

使用正则表达式解析页面

如果你对正则表达式没有任何的概念,那么推荐先阅读《正则表达式30分钟入门教程》,然后再阅读我们之前讲解在Python中如何使用正则表达式一文。

XPath解析和lxml

XPath是在XML文档中查找信息的一种语法,它使用路径表达式来选取XML文档中的节点或者节点集。这里所说的XPath节点包括元素、属性、文本、命名空间、处理指令、注释、根节点等。

  Harry Potter 29.99   Learning XML 39.95 

对于上面的XML文件,我们可以用如下所示的XPath语法获取文档中的节点。

在使用XPath语法时,还可以使用XPath中的谓词。

XPath还支持通配符用法,如下所示。

如果要选取多个节点,可以使用如下所示的方法。

【说明】:上面的例子来自于菜鸟教程网站上XPath教程,有兴趣的读者可以自行阅读原文。

当然,如果不理解或者不太熟悉XPath语法,可以在Chrome浏览器中按照如下所示的方法查看元素的XPath语法。

BeautifulSoup的使用

BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。

1.遍历文档树

  • 获取标签

  • 获取标签属性

  • 获取标签内容

  • 获取子(孙)节点

  • 获取父节点/祖先节点

  • 获取兄弟节点

2.搜索树节点

  • find / find_all

  • select_one / select

【说明】:更多内容可以参考BeautifulSoup的官方文档。

PyQuery的使用

pyquery相当于jQuery的Python实现,可以用于解析HTML网页。

实例 - 获取知乎发现上的问题链接

from urllib.parse import urljoinimport reimport requestsfrom bs4 import BeautifulSoupdef main(): headers = {'user-agent': 'Baiduspider'} proxies = { 'http': 'http://122.114.31.177:808' } base_url = 'https://www.zhihu.com/' seed_url = urljoin(base_url, 'explore') resp = requests.get(seed_url, headers=headers, proxies=proxies) soup = BeautifulSoup(resp.text, 'lxml') href_regex = re.compile(r'^/question') link_set = set() for a_tag in soup.find_all('a', {'href': href_regex}): if 'href' in a_tag.attrs: href = a_tag.attrs['href'] full_url = urljoin(base_url, href) link_set.add(full_url) print('Total %d question pages found.' % len(link_set))if __name__ == '__main__': main()

上述内容就是Python中关于数据采集和解析是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

节点 文档 页面 内容 数据 表达式 语法 代码 标签 正则 教程 文件 方式 更多 浏览器 网页 面的 开发 浏览 数据采集 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发怎么申请退税 通信工程对网络安全的意义 服务器优盘重装系统 视频分发服务器价格 服务器安全狗下载手机版下载 自建游戏更新服务器 论文放万方数据库有什么用 全速创想网络技术有限公司 宁德国投集团网络安全招标 江西三套家庭教育网络安全 包头学习网络技术 oracle 列式数据库 浙江品牌软件开发一体化 海关网络安全工作总结 前海链贝互联网科技有限公司 如何提取数据库表单中的信息 我的世界躲猫猫服务器ip地址 海外服务器租用多少钱一年 恩科网络技术学院教程 DNF单机虚拟机数据库连接错误 北京服务器迁移企业云服务器 wps无法解析服务器名称或地址 软件开发岗校园招聘 网络安全指标公告 重庆梁平生鲜类的软件开发 思修网络安全论文 电容屏硬件软件开发 安托尼常数数据库 监控服务器回收价重庆 维普学术数据库有哪些
0