当前位置:首页 » 《随便一记》 » 正文

【你评论,我送书】Python的爬虫基础知识

11 人参与  2023年04月08日 13:39  分类 : 《随便一记》  评论

点击全文阅读


目录

赠书地区

本期赠书:

前言/序言

本书内容简介 

获得赠书

参与方式:关注博主、点赞、收藏,(评论:人生苦短,我用Python!!)

名单公布时间:截止到4月7日晚上7:00

本书目录

知识地区


赠书地区

本期赠书:

前言/序言

深度学习技术可用于开发智能Web应用程序。过去几年,在产品和业务中采用深度学习技术的公司数量大幅增长,为了市场机会而提供基于人工智能和深度学习的解决方案的初创企业数量也显著增加。本书介绍了许多使用Python在Web开发中实现深度学习的工具和技术实践。

本书首先阐释了机器学习的基础知识,重点是深度学习和神经网络的基础知识,以及它们的常见变体(如卷积神经网络和循环神经网络),并介绍了如何将它们集成到Web中。我们演示了为自定义模型创建REST API,使用Python库(如Django和Flask)创建支持深度学习的Web应用程序。你将看到如何在Google云平台、AWS和Microsoft Azure上为基于深度学习的Web部署设置云环境,并了解如何使用深度学习API。此外,你还将学习使用Microsoft的Cognitive Toolkit(CNTK),它是一个类似于Keras的深度学习框架。你还将掌握如何部署真实世界的网站,并使用reCAPTCHA和Cloudflare保护网站安全。最后,本书还演示了如何通过Dialogflow在网页上集成语音用户界面。

在通读完本书之后,相信你能够在最佳工具和实践的帮助下部署你的智能Web应用程序和网站。

本书读者

本书适用于希望在Web上执行深度学习技术和方法的数据科学家、机器学习从业者和深度学习工程师。对于希望在浏览器中使用智能技术使其更具交互性的Web开发人员来说,本书也是理想之选。在学习完本书之后,你将深入了解浏览器数据。

内容介绍

本书共分为4篇12章,具体内容如下。

第1篇:“Web和人工智能”,包括第1章。

第1章:“人工智能简介和机器学习基础”,简要介绍机器学习、深度学习以及与Web开发相关的其他形式的人工智能方法论。另外,本章还快速介绍机器学习管道的基本主题,如探索性数据分析(EDA)、数据预处理、特征工程、训练和测试、评估模型等。最后还比较AI流行之前网站提供的交互性、用户体验以及它们现在的情况,探讨知名Web-AI企业正在做的工作,以及人工智能给它们的产品带来的巨大变化。

第2篇:“使用深度学习进行Web开发”,包括第2~4章。

第2章:“使用Python进行深度学习”,详细阐释与深度学习相关的基本概念和术语,以及如何使用深度学习技术构建一个简单的Web应用程序,其中还介绍Python中的不同深度学习库。

第3章:“创建第一个深度学习Web应用程序”,讨论利用深度学习的Web应用程序架构的若干个重要概念,并介绍探索数据集的方法。本章还展示如何实现和改进一个简单的神经网络,以及如何将其封装到API中以开发一个简单的Web应用程序。最后还演示如何使用不同的标准Web技术堆栈来实现API。

第4章:“TensorFlow.js入门”,介绍最流行的深度学习JavaScript库—TensorFlow.js(Tf.js)。本章简要概述TensorFlow.js的基本概念、它出现的意义以及它能够在浏览器中执行的操作。此外,本章还展示如何通过TensorFlow.js使用预训练模型并构建一个简单的Web应用程序。

第3篇:“使用不同的深度学习API进行Web开发”,包括第5~8章。

第5章:“通过API进行深度学习”,详细阐释API的概念及其在软件开发中的重要性。此外,本章还介绍不同的深度学习API示例(主要涵盖自然语言处理和计算机视觉两大领域)。最后,本章探讨在选择深度学习API提供商时应考虑的事项。

第6章:“使用Python在Google云平台上进行深度学习”,介绍Google云平台为Web开发人员所提供的AI集成产品。重点是Dialogflow,它可用于制作聊天机器人和对话式AI;另外还有Cloud Vision API,可用于构建良好的视觉识别系统;还有Cloud Translate API,可为不同地区的用户提供其语言的网站内容。本章详细讨论它们的应用,并演示在Python中使用它们的基本方法。

第7章:“使用Python在AWS上进行深度学习”,介绍Amazon Web Services(AWS)并简要讨论它的各种产品,包括Alexa API和Rekognition API。Alexa API可用于构建家庭自动化Web应用程序和其他交互界面,而Rekognition API则可用于检测照片和视频中的人和物体。

第8章:“使用Python在Microsoft Azure上进行深度学习”,介绍Microsoft Azure云服务,重点介绍Cognitive Toolkit(CNTK)、Face API和Text Analytics API等。Face API可以识别图片中的人像特征,而Text Analytics API则可用于从给定的文本片段中提取有意义的信息。

第4篇:“生产环境中的深度学习—智能Web应用程序开发”,包括第9~12章。

第9章:“支持深度学习的网站的通用生产框架”,介绍为在生产环境中的Web站点有效部署深度学习而设置的通用框架。涵盖定义问题陈述、根据问题陈述收集数据、数据清洗和预处理、构建AI模型、创建界面、在界面上使用AI模型等步骤,并创建一个端到端AI集成Web应用程序示例。

第10章:“使用深度学习系统保护Web应用程序”,讨论使用Python 进行深度学习以保护网站安全的若干技巧。本章介绍reCAPTCHA和Cloudflare,并讨论如何使用它们来增强网站的安全性。最后还展示如何在Python后端使用深度学习来实现安全机制以检测网站上的恶意用户。

第11章:“自定义Web深度学习生产环境”,讨论在生产环境中更新模型的方法以及如何根据需求选择正确的方法。本章介绍一些用于创建深度学习数据流的著名工具,最后还构建一个在后端使用在线学习的示例生产应用 程序。

第12章:“使用深度学习API和客服聊天机器人创建端到端Web应用程序”,介绍自然语言处理及其常用术语,讨论如何创建聊天机器人以使用Dialogflow解决一般客服查询并将其集成到Django和Flask网站中。本章探索实现客服机器人个性的方法以及如何使此类系统资源有效。此外,本章还介绍一种使用Web Speech API在网页上进行语音识别和语音合成的方法。

附录 A:“Web+深度学习的成功案例和新兴领域”,介绍一些著名网站的成功案例,它们的产品在很大程度上依赖于利用深度学习的力量。该附录还讨论Web开发中可以通过深度学习进行增强的一些关键研究领域。这将帮助你更深入地研究Web技术和深度学习的结合,并激励你开发出自己的智能Web应用程序。

充分利用本书

假设你了解Python语言,特别是Python 3.6及更高版本。强烈建议在本地系统上安装Python的Anaconda发行版。支持Python 3.6及更高版本的Anaconda发行版都适合运行本书中的示例。

本书内容简介 

《Python Web深度学习》详细阐述了与Python Web相关的基本解决方案,主要包括人工智能简介和机器学习基础、使用Python进行深度学习、创建第一个深度学习Web应用程序、TensorFlow.js入门、通过API进行深度学习、使用Python在Google云平台上进行深度学习、使用Python在AWS上进行深度学习、使用Python在Microsoft Azure上进行深度学习、支持深度学习的网站的通用生产框架、使用深度学习系统保护Web应用程序、自定义Web深度学习生产环境、使用深度学习API和客服聊天机器人创建端到端Web应用程序等内容。此外,本书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。

获得赠书

参与方式:关注博主、点赞、收藏,(评论:人生苦短,我用Python!!)

为了保证公平,所以我们采取集赞制度,我们可以先试几期,如果大家觉得有什么更好的获取赠书方法,可以私信我哦(即可获得免费的实体书一本(!!!!免费包邮!!!!!))

名单公布时间:截止到4月7日晚上7:00

获得资格的小伙伴私信我收货地址(包邮哦!)

本书目录

第1篇 Web和人工智能 1第1章 人工智能简介和机器学习基础 31.1 人工智能及其类型简介 41.1.1 影响人工智能推进的因素 41.1.2 数据 51.1.3 算法的进步 61.1.4 硬件的进步 71.1.5 高性能计算的大众化 71.2 机器学习—流行的人工智能形式 71.3 关于深度学习 81.4 人工智能、机器学习和深度学习之间的关系 101.5 机器学习基础知识 111.5.1 机器学习的类型 111.5.2 监督学习 121.5.3 无监督学习 131.5.4 强化学习 131.5.5 半监督学习 141.6 必要的术语 141.6.1 训练集、测试集和验证集 141.6.2 偏差和方差 151.6.3 过拟合和欠拟合 151.6.4 训练误差和泛化误差 171.7 机器学习的标准工作流程 181.7.1 数据检索 181.7.2 数据准备 191.7.3 建立模型 201.7.4 模型对比与选择 231.7.5 部署和监控 231.8 融合AI之前和之后的Web应用 251.8.1 聊天机器人 251.8.2 Web分析 261.8.3 垃圾邮件过滤 271.8.4 搜索引擎 281.9 知名Web-AI企业以及它们正在做的工作 291.9.1 Google 301.9.2 Facebook 331.9.3 Amazon 341.10 小结 35第2篇 使用深度学习进行Web开发第2章 使用Python进行深度学习 392.1 揭开神经网络的神秘面纱 392.1.1 人工神经元 402.1.2 线性神经元详解 412.1.3 非线性神经元详解 432.1.4 神经网络的输入和输出层 452.1.5 梯度下降和反向传播 492.2 不同类型的神经网络 522.2.1 卷积神经网络 522.2.2 循环神经网络 582.3 Jupyter Notebook初探 642.3.1 安装Jupyter Notebook 642.3.2 验证安装 652.3.3 使用Jupyter Notebook 662.4 设置基于深度学习的云环境 672.4.1 设置AWS EC2 GPU深度学习环境 682.4.2 Crestle上的深度学习 722.4.3 其他深度学习环境 722.5 NumPy和Pandas初探 732.5.1 关于NumPy库 732.5.2 NumPy数组 732.5.3 基本的NumPy数组操作 752.5.4 NumPy数组与Python列表 762.5.5 关于Pandas 772.6 小结 78第3章 创建第一个深度学习Web应用程序 793.1 技术要求 793.2 构建深度学习Web应用程序 803.2.1 深度学习Web应用程序规划 803.2.2 通用深度学习网络应用程序的结构图 803.3 理解数据集 813.3.1 手写数字的MNIST数据集 813.3.2 探索数据集 823.3.3 创建函数来读取图像文件 833.3.4 创建函数来读取标签文件 853.3.5 数据集汇总信息 853.4 使用Python实现一个简单的神经网络 863.4.1 导入必要的模块 873.4.2 重用函数以加载图像和标签文件 873.4.3 重塑数组以使用Keras进行处理 893.4.4 使用Keras创建神经网络 893.4.5 编译和训练Keras神经网络 903.4.6 评估和存储模型 913.5 创建Flask API以使用服务器端Python 923.5.1 设置环境 923.5.2 上传模型结构和权重 923.5.3 创建第一个Flask服务器 923.5.4 导入必要的模块 933.5.5 将数据加载到脚本运行时并设置模型 933.5.6 设置应用程序和index()函数 943.5.7 转换图像函数 943.5.8 预测API 953.6 通过cURL使用API并使用Flask创建Web客户端 963.6.1 通过cURL使用API 963.6.2 为API创建一个简单的Web客户端 973.7 改进深度学习后端 1003.8 小结 100第4章 TensorFlow.js入门 1014.1 技术要求 1014.2 TF.js的基础知识 1024.2.1 关于TensorFlow 1024.2.2 关于TF.js 1024.2.3 TF.js出现的意义 1024.3 TF.js的基本概念 1034.3.1 张量 1034.3.2 变量 1044.3.3 操作符 1044.3.4 模型和层 1054.4 使用TF.js的案例研究 1064.4.1 TF.js迷你项目的问题陈述 1064.4.2 鸢尾花数据集 1064.5 开发一个使用TF.js的深度学习Web应用程序 1074.5.1 准备数据集 1074.5.2 项目架构 1074.5.3 启动项目 1084.5.4 创建TF.js模型 1104.5.5 训练TF.js模型 1124.5.6 使用TF.js模型进行预测 1134.5.7 创建一个简单的客户端 1154.5.8 运行TF.js Web应用程序 1174.6 TF.js的优点和局限性 1194.7 小结 119第3篇 使用不同的深度学习API进行Web开发第5章 通过API进行深度学习 1235.1 关于API 1235.2 使用API的重要性 1245.3 API与库的异同 1255.4 一些广为人知的深度学习API 1265.5 一些鲜为人知的深度学习API 1275.6 选择深度学习API提供商 1285.7 小结 129第6章 使用Python在Google云平台上进行深度学习 1316.1 技术要求 1316.2 设置Google云平台账户 1316.3 在GCP上创建第一个项目 1336.4 在Python中使用Dialogflow API 1356.4.1 创建Dialogflow账户 1366.4.2 创建新代理 1366.4.3 创建新Intent 1386.4.4 测试代理 1396.4.5 安装Dialogflow Python SDK 1406.4.6 创建GCP服务账号 1416.4.7 使用Python API调用Dialogflow代理 1436.5 在Python中使用Cloud Vision API 1466.5.1 使用预训练模型的重要性 1476.5.2 设置Vision Client库 1486.5.3 使用Python调用Cloud Vision API 1496.6 在Python中使用Cloud Translation API 1506.6.1 为Python设置Cloud Translate API 1516.6.2 使用Google Cloud Translation Python库 1526.7 小结 152第7章 使用Python在AWS上进行深度学习 1557.1 技术要求 1557.2 AWS入门 1567.3 AWS产品简介 1587.4 boto3入门 1607.5 配置环境变量并安装boto3 1627.5.1 在Python中加载环境变量 1627.5.2 创建S3存储桶 1627.5.3 使用boto3从Python代码中访问S3 1647.6 在Python中使用Rekognition API 1657.6.1 Rekognition API功能介绍 1657.6.2 使用Rekognition API的名人识别功能 1667.6.3 通过Python代码调用Rekognition API 1677.7 在Python中使用Alexa API 1717.7.1 先决条件和项目框图 1717.7.2 为Alexa技能创建配置 1737.7.3 设置Login with Amazon服务 1737.7.4 创建技能 1757.7.5 配置AWS Lambda函数 1767.7.6 创建Lambda函数 1787.7.7 配置Alexa技能 1807.7.8 为技能设置Amazon DynamoDB 1817.7.9 为AWS Lambda函数部署代码 1827.7.10 测试Lambda函数 1897.7.11 测试AWS Home Automation技能 1917.8 小结 192第8章 使用Python在Microsoft Azure上进行深度学习 1958.1 技术要求 1958.2 设置Azure账户 1968.3 Azure提供的深度学习服务 1988.4 使用Face API和Python进行对象检测 2008.4.1 初始设置 2008.4.2 在Python代码中使用Face API 2038.4.3 可视化识别结果 2058.5 使用Text Analytics API和Python提取文本信息 2078.5.1 快速试用Text Analytics API 2078.5.2 在Python代码中使用Text Analytics API 2088.6 关于CNTK 2108.6.1 CNTK入门 2108.6.2 在本地机器上安装CNTK 2108.6.3 在Google Colaboratory上安装CNTK 2118.6.4 创建CNTK神经网络模型 2128.6.5 训练CNTK模型 2158.6.6 测试和保存CNTK模型 2168.7 Django Web开发简介 2168.7.1 Django入门 2178.7.2 创建一个新的Django项目 2188.7.3 设置主页模板 2188.8 使用来自Django项目的CNTK进行预测 2238.8.1 设置预测路由和视图 2238.8.2 进行必要的模块导入 2248.8.3 使用CNTK模型加载和预测 2258.8.4 测试Web应用程序 2268.9 小结 227第4篇 生产环境中的深度学习——智能Web应用程序开发第9章 支持深度学习的网站的通用生产框架 2319.1 技术要求 2319.2 定义问题陈述 2329.3 建立项目的心智模型 2329.4 避免获得错误数据 2359.5 关于构建AI后端的问题 2379.5.1 期望网站的AI部分是实时的 2379.5.2 假设来自网站的传入数据是理想的 2379.6 端到端AI集成Web应用程序示例 2389.6.1 数据收集和清洗 2389.6.2 构建AI模型 2399.6.3 导入必要的模块 2399.6.4 读取数据集并准备清洗函数 2409.6.5 提取需要的数据 2409.6.6 应用文本清洗函数 2419.6.7 将数据集拆分为训练集和测试集 2419.6.8 聚合有关产品和用户的文本 2419.6.9 创建用户和产品的TF-IDF向量化器 2429.6.10 根据提供的评级创建用户和产品索引 2429.6.11 创建矩阵分解函数 2439.6.12 将模型保存为pickle文件 2439.6.13 构建用户界面 2449.6.14 创建API来响应搜索查询 2449.6.15 创建用户界面以使用API 2479.7 小结 248第10章 使用深度学习系统保护Web应用程序 24910.1 技术要求 24910.2 reCAPTCHA的由来 25010.3 恶意用户检测 25110.4 基于LSTM的用户认证模型 25210.4.1 为用户身份认证有效性检查构建模型 25210.4.2 训练模型 25610.4.3 托管自定义身份验证模型 25710.5 基于Django构建使用API的应用程序 25910.5.1 Django项目设置 25910.5.2 在项目中创建应用程序 25910.5.3 将应用程序链接到项目中 26010.5.4 为网站添加路由 26010.5.5 在BBS应用程序中创建路由处理文件 26110.5.6 添加认证路由和配置 26110.5.7 创建登录页面 26110.5.8 创建注销视图 26310.5.9 创建登录页面模板 26310.5.10 BBS页面模板 26510.5.11 添加到BBS页面模板 26510.5.12 BBS模型 26610.5.13 创建BBS视图 26710.5.14 创建添加贴文的视图 26810.5.15 创建管理员用户并对其进行测试 26810.5.16 通过Python在Web应用程序中使用reCAPTCHA 26910.6 使用Cloudflare保护网站安全 27210.7 小结 273第11章 自定义Web深度学习生产环境 27511.1 技术要求 27511.2 生产环境中的深度学习概述 27611.2.1 Web API服务 27811.2.2 在线学习 27811.2.3 批量预测 27811.2.4 自动机器学习 27811.3 在生产环境中部署机器学习的流行工具 27911.3.1 creme 27911.3.2 Airflow 28211.3.3 AutoML 28411.4 深度学习Web生产环境示例 28511.4.1 项目基础步骤 28511.4.2 探索数据集 28511.4.3 构建预测模型 28611.4.4 实现前端 29011.4.5 实现后端 29111.4.6 将项目部署到Heroku上 29411.5 安全措施、监控技术和性能优化 29711.6 小结 298第12章 使用深度学习API和客服聊天机器人创建端到端Web应用程序 29912.1 技术要求 29912.2 自然语言处理简介 30012.2.1 语料库 30012.2.2 词性 30012.2.3 分词 30112.2.4 词干提取和词形还原 30112.2.5 词袋 30212.2.6 相似性 30212.3 聊天机器人简介 30312.4 创建拥有客服代表个性的Dialogflow机器人 30412.4.1 关于Dialogflow 30412.4.2 步骤1—打开Dialogflow控制台 30512.4.3 步骤2—创建新代理 30612.4.4 步骤3—了解仪表板 30612.4.5 步骤4—创建Intent 30812.4.6 步骤5—创建一个webhook 31312.4.7 步骤6—创建Firebase Cloud Functions 31312.4.8 步骤7—为机器人添加个性 31512.5 通过ngrok在本地主机上使用HTTPS API 31612.6 使用Django创建测试用户界面来管理订单 31812.6.1 步骤1—创建Django项目 31812.6.2 步骤2—创建一个使用订单管理系统API的应用程序 31912.6.3 步骤3—设置settings.py 31912.6.4 步骤4—向apiui中添加路由 32012.6.5 步骤5—在apiui应用程序中添加路由 32112.6.6 步骤6—创建所需的视图 32112.6.7 步骤7—创建模板 32212.7 使用Web Speech API在网页上进行语音识别和语音合成 32212.7.1 步骤1—创建按钮元素 32312.7.2 步骤2—初始化Web Speech API并执行配置 32412.7.3 步骤3—调用Dialogflow代理 32512.7.4 步骤4—在Dialogflow Gateway上创建Dialogflow API代理 32612.7.5 步骤5—为按钮添加click处理程序 32812.8 小结 329附录A Web+深度学习的成功案例和新兴领域 331A.1 成功案例 331A.1.1 Quora 331A.1.2 多邻国 332A.1.3 Spotify 333A.1.4 Google相册 333A.2 重点新兴领域 334A.2.1 音频搜索 334A.2.2 阅读理解 336A.2.3 检测社交媒体上的假新闻 337A.3 结语 338

知识地区

当下互联网行业的兴起,越来越多的企业喜欢使用同行数据做对比来提升自己不足。那么企业是如何获取这些海量公开数据呢?其实很简单,大多数企业都是利用爬虫技术来获取资源,那么学习爬虫技术需要有哪些基础知识储备 ?下面的值得大家看一看。

Python非常适合用来开发网页爬虫,理由如下:

1、抓取网页本身的接口

相比与其他静态编程语言,如java,c#,c++,python抓取网页文档的接口更简洁;相比其他动态脚本语言,如perl,shell,python的urllib包提供了较为完整的访问网页文档的API。(当然ruby也是很好的选择)

此外,抓取网页有时候需要模拟浏览器的行为,很多网站对于生硬的爬虫抓取都是封杀的。这是我们需要模拟user agent的行为构造合适的请求,譬如模拟用户登陆、模拟session/cookie的存储和设置。在python里都有非常优秀的第三方包帮你搞定,如Requests,mechanize

2、网页抓取后的处理

抓取的网页通常需要处理,比如过滤html标签,提取文本等。python的beautifulsoap提供了简洁的文档处理功能,能用极短的代码完成大部分文档的处理。

其实以上功能很多语言和工具都能做,但是用python能够干得最快,最干净。

Life is short, you need python.

PS:python2.x和python3.x有很大不同,本文只讨论python3.x的爬虫实现方法。

爬虫架构

架构组成

URL管理器:管理待爬取的url集合和已爬取的url集合,传送待爬取的url给网页下载器。

网页下载器(urllib):爬取url对应的网页,存储成字符串,传送给网页解析器。

网页解析器(BeautifulSoup):解析出有价值的数据,存储下来,同时补充url到URL管理器。

运行流程

URL管理器

基本功能

添加新的url到待爬取url集合中。

判断待添加的url是否在容器中(包括待爬取url集合和已爬取url集合)。

获取待爬取的url。

判断是否有待爬取的url。

将爬取完成的url从待爬取url集合移动到已爬取url集合。

存储方式

1、内存(python内存)

待爬取url集合:set()

已爬取url集合:set()

2、关系数据库(mysql)

urls(url, is_crawled)

3、缓存(redis)

待爬取url集合:set

已爬取url集合:set

大型互联网公司,由于缓存数据库的高性能,一般把url存储在缓存数据库中。小型公司,一般把url存储在内存中,如果想要永久存储,则存储到关系数据库中。

网页下载器(urllib)

将url对应的网页下载到本地,存储成一个文件或字符串。

基本方法

新建baidu.py,内容如下:

import urllib.requestresponse = urllib.request.urlopen('http://www.baidu.com')buff = response.read()html = buff.decode("utf8")print(html)

命令行中执行python baidu.py,则可以打印出获取到的页面。

构造Request

上面的代码,可以修改为:

import urllibrequestrequest = urllib.request.Request('http://www.baidu.com')response = urllib.request.urlopen(request)buff = response.read()html = buff.decode("utf8")print(html)

携带参数

新建baidu2.py,内容如下:

import urllib.requestimport urllib.parseurl = 'http://www.baidu.com'values = {'name': 'voidking','language': 'Python'}data = urllib.parse.urlencode(values).encode(encoding='utf-8',errors='ignore')headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0' }request = urllib.request.Request(url=url, data=data,headers=headers,method='GET')response = urllib.request.urlopen(request)buff = response.read()html = buff.decode("utf8")print(html)

使用Fiddler监听数据

我们想要查看一下,我们的请求是否真的携带了参数,所以需要使用fiddler。

打开fiddler之后,却意外发现,上面的代码会报错504,无论是baidu.py还是baidu2.py。

虽然python有报错,但是在fiddler中,我们可以看到请求信息,确实携带了参数。

经过查找资料,发现python以前版本的Request都不支持代理环境下访问https。但是,最近的版本应该支持了才对。

添加处理器

import urllib.requestimport http.cookiejar# 创建cookie容器cj = http.cookiejar.CookieJar()# 创建openeropener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))# 给urllib.request安装openerurllib.request.install_opener(opener)# 请求request = urllib.request.Request('http://www.baidu.com/')response = urllib.request.urlopen(request)buff = response.read()html = buff.decode("utf8")print(html)print(cj)

网页解析器(BeautifulSoup)

从网页中提取出有价值的数据和新的url列表。

解析器选择

为了实现解析器,可以选择使用正则表达式、html.parser、BeautifulSoup、lxml等,这里我们选择BeautifulSoup。

其中,正则表达式基于模糊匹配,而另外三种则是基于DOM结构化解析。

BeautifulSoup

安装测试

1、安装,在命令行下执行pip install beautifulsoup4。

2、测试

import bs4print(bs4)

基本用法

1、创建BeautifulSoup对象

import bs4from bs4 import BeautifulSoup# 根据html网页字符串创建BeautifulSoup对象html_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were<a href="Example Domain" class="sister" id="link1">Elsie</a>,<a href="Example Domain" class="sister" id="link2">Lacie</a> and<a href="Example Domain" class="sister" id="link3">Tillie</a>;and they lived at the bottom of a well.</p><p class="story">...</p>"""soup = BeautifulSoup(html_doc)print(soup.prettify())

2、访问节点

print(soup.title)print(soup.title.name)print(soup.title.string)print(soup.title.parent.name)print(soup.p)print(soup.p['class'])

3、指定tag、class或id

print(soup.find_all('a'))print(soup.find('a'))print(soup.find(class_='title'))print(soup.find(id="link3"))print(soup.find('p',class_='title'))

4、从文档中找到所有<a>标签的链接

for link in soup.find_all('a'):    print(link.get('href'))

出现了警告,根据提示,我们在创建BeautifulSoup对象时,指定解析器即可。

soup = BeautifulSoup(html_doc,'html.parser')

5、从文档中获取所有文字内容

print(soup.get_text())

6、正则匹配

link_node = soup.find('a',href=re.compile(r"til"))print(link_node)

后记

python爬虫基础知识,至此足够,接下来,在实战中学习更高级的知识。

制作不易,求三连+关注,爱你么么哒


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/58873.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1