Python爬虫从端到端抓取网页

网页抓取和 REST API 简介

网页抓取是使用计算机程序以自动方式从网站提取和解析数据的过程。这是创建用于研究和学习的数据集的有用技术。虽然网页抓取通常涉及解析和处理 HTML 文档,但某些平台还提供 REST API 来以机器可读格式(如 JSON)检索信息。在本教程中,我们将使用网络抓取和 REST API 创建真实的数据集。

如何运行代码

  学习材料的最佳方法是执行代码并亲自进行实验。本教程是一个可执行的 Jupyter 笔记本。

您还可以选择“Run on Colab”或“Run on Kaggle”,但您需要在 Google Colab 或 Kaggle 上创建帐户才能使用这些平台等。

我将在该项目中做什么

1)选择一个网站并描述您的目标

2)使用requests库下载网页

3)使用Beautiful Soup解析和提取信息

4)使用提取的信息创建 CSV 文件

5)编写一个函数:

  1. 从主题页面获取主题列表
  2. 从各个主题页面获取顶级存储库列表
  3. 对于每个主题,创建该主题的顶级存储库的 CSV

GitHub 主题的热门存储库

 GitHub URL“ https://github.com/dineshmalappagari/Web-Scraping ”来检查项目。

1)选择一个网站并描述您的目标

——浏览不同的网站并选择进行抓取。查看“项目创意”部分以获取灵感。

— - 确定您想要从网站上抓取的信息。决定输出 CSV 文件的格式。

— -在 Juptyer 笔记本中总结您的项目想法并概述您的策略。使用上面的“新建”按钮。

1)我要抓取“ https://github.com/topics”

2)在网站中,我们按字母顺序排列主题。在主题中,我将从主题中选取前 25 个存储库

3)从每个存储库中,我将获取 Repo_name、用户名、Stars 和 URL

2)使用requests库下载网页

— -检查网站的 HTML 源代码并确定要下载的正确 URL。

— -使用requests库将网页下载并保存到本地。

— -创建一个功能来自动下载不同主题/搜索查询。

使用下载网页requests

我们应该安装 !pip 安装请求

requests.get返回一个响应对象,其中包含页面内容和一些使用状态代码指示请求是否成功的信息。在此处了解有关 HTTP 状态代码的更多信息:

让我们将内容保存到具有.html扩展名的文件中。

现在,您可以使用 Jupyter 中的“文件 > 打开”菜单选项并单击显示的文件列表中的3D .html查看该文件。这是打开文件时您将看到的内容:

如果我想编辑文件

检查网页的 HTML 源代码

  正如前面提到的,网页是用一种称为 HTML(超文本标记语言)的语言编写的。HTML 是一种       相 当简单的语言,由标签(也称为节点元素)组成,例<a href="https://jovian.ai"   target="_blank">Go to Jovian</a>。HTML 标    签由三部分组成:

  1. 名称:(htmlheadbodydiv等)指示标签代表什么以及浏览器应如何解释其中的信息。
  2. 属性:(hreftargetclassid等)浏览器使用标签的属性来自定义标签的显示方式并决定用户交互时发生的情况。
  3. 子级:标签可以在开始段和结束段之间包含一些文本或其他标签或两者都包含,例如<div>Some content</div>

HTML 文档内部

这是一个简单的 HTML 文档,其中使用了许多常用标签:

<html><head><title>All About Python</title></head><body><div style="width: 640px; margin: 40px auto"><h1 style="text-align:center;">Python - A Programming Language</h1><img src="https://www.python.org/static/community_logos/python-logo-master-v3-TM.png" alt="python-logo" style="width:240px;margin:0 auto;display:block;"><div><h2>About Python</h2><p>Python is an <span style="font-style: italic">interpreted, high-level and general-purpose</span> programming language. Python's design philosophy emphasizes code readability with its notable use of significant indentation. Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects. Visit the <a href="https://docs.python.org/3/">official documentation</a> to learn more.</p></div><div><h2>Some Python Libraries</h2><ul id="libraries"><li>Numpy</li><li>Pandas</li><li>PyTorch</li><li>Scikit Learn</li></ul></div><div><h2>Recent Python Versions</h2><table id="versions-table"><tr><th class="bordered-table">Version</th><th class="bordered-table">Released on</th></tr><tr><td class="bordered-table">Python 3.8</td><td class="bordered-table">October 2019</td></tr><tr><td class="bordered-table">Python 3.7</td><td class="bordered-table">June 2018</td></tr></table><style>.bordered-table { border: 1px solid black; padding: 8px;}</style></div></div></body>
</html>

练习:复制上面的 HTML 代码并将其粘贴到名为webpage.html. 要创建新文件,请从菜单栏中选择“文件 > 打开”,然后选择“新建 > 文本”文件。查看保存的文件。你能看到浏览器如何以不同的方式显示不同的标签吗?

练习:对里面的代码进行一些更改webpage.html。保存文件并再次查看。您看到自己的改变得到体现了吗?尝试一下文件的结构。尝试打破事物并修复它们!

常用标签和属性

   以下是一些最常用的 HTML 标签:

  • html
  • head
  • title
  • body
  • div
  • span
  • h1h6
  • p
  • img
  • ul,olli
  • tabletr,thtd
  • style
  • ……

每个标签支持多个属性。以下是用于修改标签行为的一些常见属性:

  • id
  • style
  • class
  • href(与 一起使用<a>
  • src(与 一起使用<img>

使用 Beautiful Soup 从 HTML 中提取信息

要以编程方式从网页的 HTML 源代码中提取信息,我们可以使用Beautiful Soup库。让我们安装该库并BeautifulSoupbs4模块导入该类。

3)使用Beautiful Soup解析和提取信息

— -使用 Beautiful soup 解析和探索下载的网页的结构。

——使用正确的属性和方法来提取所需的信息。

— -创建函数以从页面提取到列表和字典中。

— -(可选)如果需要,使用 REST API 获取其他信息。

我想抓取 gitHub 中的所有主题

我想获取 gitHub 中所有主题的描述

我想为主题 3D 创建 URL

网址已创建

我想创建主题列表

我想创建列表中所有主题的描述

我想为每个主题创建 URL 列表

4)使用提取的信息创建 CSV 文件

— -为下载、解析和保存 CSV 的端到端过程创建函数。

— -使用不同的输入执行该函数以创建 CSV 文件的数据集。

— -使用 Pandas 读回 CSV 文件来验证其中的信息。

我想为我的信息创建数据框

从主题页面获取信息

我想将 '92.6k' 转换为 '92600'

我想使用函数添加我的所有数据

我想将信息存储到我指定列名称的列中

我想检查我的代码如何工作

我们检查一下我们的代码在一行中是如何工作的

我要为文件写的代码不应该重复

  os.path 模块始终是适合 Python 运行的操作系统的路径模块,因此可用于本地路径。

最终代码

 导入操作系统

def scrape_topic(topic_url, path):
if os.path.exists(path):
print(“文件 {} 已存在。正在跳过…”.format(path))
return
topic_df = get_topic_repos(get_topic_page(topic_url))
topic_df.to_csv (路径,索引=无)

5)编写一个函数:

  1. 从主题页面获取主题列表
  2. 从各个主题页面获取顶级存储库列表
  3. 对于每个主题,创建该主题的顶级存储库的 CSV

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/87571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】C++ 类中的 this 指针用法 ③ ( 全局函数 与 成员函数 相互转化 | 有参构造函数设置默认参数值 | 返回匿名对象与返回引用 )

文章目录 一、全局函数 与 成员函数 相互转化1、成员函数转为全局函数 - 多了一个参数2、全局函数转为成员函数 - 通过 this 指针隐藏操作数 二、有参构造函数设置默认参数值三、返回匿名对象与返回引用四、完整代码示例 一、全局函数 与 成员函数 相互转化 1、成员函数转为全局…

一、vue2的基础语法巩固

一、定义&#xff1a;是一个渐进式的JavaScript框架 二、特点&#xff1a; 减少了大量的DOM操作编写 &#xff0c;可以更专注于逻辑操作分离数据和界面的呈现&#xff0c;降低了代码耦合度(前端端分离)支持组件化开发&#xff0c;更利于中大型项目的代码组织 vue2核心功能&a…

【Linux】生产消费模型 + 线程池

文章目录 &#x1f4d6; 前言1. 生产消费模型2. 阻塞队列2.1 成员变量&#xff1a;2.2 入队(push)和出队(pop)&#xff1a;2.3 封装与测试运行&#xff1a;2.3 - 1 对代码进一步封装2.3 - 2 分配运算任务2.3 - 3 测试与运行 3. 循环阻塞队列3.1 POSIX信号量&#xff1a;3.1 - 1…

WKB近似

WKB方法用于研究一种特定类型的微分方程的全局性质 很有用这种特定的微分方程形如&#xff1a; 经过一些不是特别复杂的推导&#xff0c;我们可以得到他的WKB近似解。 该近似解的选择取决于函数和参数的性质同时&#xff0c;我们默认函数的定义域为当恒大于零,时&#xff1a; 当…

44.java教程

目录 一、Java 教程。 &#xff08;1&#xff09;我的第一个 JAVA 程序。 &#xff08;2&#xff09;Java 简介。 &#xff08;2.1&#xff09;java简介。 &#xff08;2.2&#xff09;主要特性。 &#xff08;2.3&#xff09;发展历史。 &#xff08;2.4&#xff09;J…

iOS应用程序的签名、重签名和安装测试

目录 前言 打开要处理的IPA文件 设置签名使用的证书和描述文件 开始ios ipa重签名 前言 ipa编译出来后&#xff0c;或者ipa进行修改后&#xff0c;需要进行重新签名才能安装到测试手机&#xff0c;或者提交app store供apple 商店审核上架。ipaguard有签名和重签名功能&…

吴恩达ChatGPT《Finetuning Large Language Models》笔记

课程地址&#xff1a;https://learn.deeplearning.ai/finetuning-large-language-models/lesson/1/introduction Introduction 动机&#xff1a;虽然编写提示词&#xff08;Prompt&#xff09;可以让LLM按照指示执行任务&#xff0c;比如提取文本中的关键词&#xff0c;或者对…

React中setState的原理及深层理解

1.为什么使用setState React并没有实现类似于Vue2中的Object.defineProperty或者Vue3中的Proxy的方式来监听数据的变化 我们必须通过setState来告知React数据已经发生了变化 setState方法是从Component中继承过来的。 2.setState异步更新 setState设计为异步&#xff0c;可…

PHY6230低成本遥控灯控芯片国产蓝牙BLE5.2 2.4G SoC

高性价比的低功耗高性能蓝牙5.2系统级芯片&#xff0c;适用多种PC/手机外设连接场景。 高性能多模射频收发机&#xff1a; 通过硬件模块的充分复用实现高性能多模数字收发机。发射机&#xff0c;最大发射功率10dBm&#xff1b;BLE 1Mbps速率接收机灵敏度达到-96dBm&#xff1…

解决Vue设置图片的动态src不生效的问题

一、问题描述 在vue项目中&#xff0c;想要动态设置img的src时&#xff0c;此时发现图片会加载失败。在Vue代码中是这样写的&#xff1a; 在Vue的data中是这样写的&#xff1a; 我的图片在根目录下的static里面&#xff1a; 但是在页面上这个图片却无法加载出来。 二、解决方案…

五、核支持向量机算法(NuSVC,Nu-Support Vector Classification)(有监督学习)

和支持向量分类(Nu-Support Vector Classification)&#xff0c;与 SVC 类似&#xff0c;但使用一个参数来控制支持向量的数量&#xff0c;其实现基于libsvm 一、算法思路 本质都是SVM中的一种优化&#xff0c;原理都类似&#xff0c;详细算法思路可以参考博文&#xff1a;三…

10分钟让你拿下Linux常用命令,网安运维测试人员必掌握!

文章目录 一、目录操作 1、批量操作 二、文件操作三、文件内容操作&#xff08;查看日志&#xff0c;更改配置文件&#xff09; 1、grep(检索文件内容)2、awk(数据统计)3、sed(替换文件内容)4、管道操作符|5、cut(数据裁剪) 四、系统日志位置五、创建与删除软连接六、压缩和解压…

虹科案例 | ELPRO帮助客户实现符合GDP标准的温度监测和高效的温度数据管理

文章来源&#xff1a;虹科环境监测技术 点击阅读原文&#xff1a;https://mp.weixin.qq.com/s/wwIPx_GK3ywqWr5BABC4KQ 在本案例研究中&#xff0c;虹科ELPRO帮助客户 ● 实施了温度监测解决方案&#xff0c;以一致的数据结构获取各国和各种运输方式的数据; ● 通过将温度数据上…

https跳过SSL认证时是不是就是不加密的,相当于http?

https跳过SSL认证时是不是就是不加密的,相当于http?&#xff0c;其实不是&#xff0c;HTTPS跳过SSL认证并不相当于HTTP&#xff0c;也不意味着没有加密。请注意以下几点&#xff1a; HTTPS&#xff08;Hypertext Transfer Protocol Secure&#xff09;本质上是在HTTP的基础上…

【postgresql】ERROR: column “xxxx.id“ must appear in the GROUP BY

org.postgresql.util.PSQLException: ERROR: column "xxx.id" must appear in the GROUP BY clause or be used in an aggregate function 错误&#xff1a;列“XXXX.id”必须出现在GROUP BY子句中或在聚合函数中使用 在mysql中是正常使用的&#xff0c;在postgre…

数字IC笔试千题解--单选题篇(二)

前言 出笔试题汇总&#xff0c;是为了总结秋招可能遇到的问题&#xff0c;做题不是目的&#xff0c;在做题的过程中发现自己的漏洞&#xff0c;巩固基础才是目的。 所有题目结果和解释由笔者给出&#xff0c;答案主观性较强&#xff0c;若有错误欢迎评论区指出&#xff0c;资料…

投资理财知识分享:100个金融知识专业术语

大家好&#xff0c;我是财富智星&#xff0c;今天跟大家分享一下投资理财知识方面100个金融知识专业术语&#xff0c;希望能帮助大家了解更多金融知识。 1. 股票&#xff1a;代表对一家公司所有权的证券。 2. 债券&#xff1a;公司或政府发行的借款证券。 3. 投资组合&#xff…

00-MySQL数据库的使用-上

一 数据库基础知识 先谈发音 MySQL如何发音&#xff1f;在国内MySQL发音有很多种&#xff0c;Oracle官方文档说 他们念作 My sequal[si:kwəl]。 数据库基本概念 数据 数据&#xff08;Data&#xff09;是指对客观事物进行描述并可以鉴别的符号&#xff0c;这 些符号是可识别…

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测(SE注意力机制)

分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测&#xff08;SE注意力机制&#xff09; 目录 分类预测 | MATLAB实现WOA-CNN-BiGRU-Attention数据分类预测&#xff08;SE注意力机制&#xff09;分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLA…

loadEnv是vite的工具函数

loadEnv()函数返回一个对象&#xff0c;这个对象就是根据开发模式还是生产环境加载的.env.development文件里的环境变量&#xff0c;有系统自带的也有自己手写的 loadEnv(第1个参数&#xff0c;第2个参数&#xff0c;第3个参数) 注意&#xff1a;第3个参数如果是“”空字符…