Python爬虫(基本流程)

news/2024/12/22 20:18:49/

1. 确定目标和范围

  • 明确需求:确定你需要从哪些网站抓取哪些数据。
  • 合法性:检查目标网站的robots.txt文件,了解哪些内容可以被抓取。
  • 数据范围:确定爬取数据的起始和结束点,比如时间范围、页面数量等。

2. 选择合适的工具库

  • 请求库:如requests或urllib,用于发送HTTP请求。
  • 解析库:如BeautifulSoup(适用于HTML和XML)、lxml(速度快,适用于大型文档)、re(正则表达式,用于复杂字符串处理)。
  • 异步库:如aiohttp、asyncio,用于提高爬虫效率。
  • 存储库:如pandas(用于数据处理和存储为CSV或Excel文件)、sqlite3或pymysql(用于数据库存储)。

3. 发送请求

  • 使用requests或其他HTTP库发送GET或POST请求到目标网站。
  • 可能需要处理Cookies、Headers、Session等信息。
  • 应对反爬虫机制,如设置User-Agent、使用代理IP等。

4. 解析数据

  • 使用BeautifulSoup或lxml等库解析HTML或XML文档。
  • 提取所需的数据,如文本、图片链接、表格数据等。

5. 存储数据

  • 将提取的数据保存到本地文件(如CSV、JSON)或数据库中。
  • 可以使用pandas进行数据处理后再保存。

6. 异常处理

  • 编写异常处理代码以应对网络问题、解析错误等情况。
  • 可以使用try-except语句块来处理这些异常。

示例

爬取一个浏览器的页面:

  • 1、通过浏览器搜索自己想要的一个页面,按F12,找到网络;
  • 2、向上拉动,找到名称栏中的第一个,单机打开;
  • 3、可以在标头里看到请求URL请求方式,复制URL(需要用到);
  • 4、在表头的最下面有"User-Agent",也复制下来

在这里插入图片描述
在这里插入图片描述
代码操作:

python"># 导入 requests 包
import requests
if __name__ == '__main__':# 模仿浏览器上网# UA伪装 让你认为我是一个浏览器(应对反爬虫机制)粘贴复制好的User-Agenthead = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"}# 1、指定url  粘贴复制好的URLurl = "https://www.sogou.com/web?query=%E6%9D%A8%E5%B9%82&_asf=www.sogou.com&_ast=&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index&sut=3151&sst0=1721289914995&lkt=4%2C1721289911845%2C1721289912426&sugsuv=1721288239060070&sugtime=1721289914995"# 2、发送请求 返回的数据在response对象内response = requests.get(url, headers=head)   # 这是get请求方式# 3、获取你想要的数据print(response.text)

如何打开?

  • 1、在项目中创建一个html文件
  • 2、将获取到的数据全部放入到html文件中
  • 3、右上角会出现浏览器的小标识,选择想用的浏览器,单机打开(不需要管有没有报错)

在这里插入图片描述
打开后就能跳到你之前所搜索的页面
在这里插入图片描述


http://www.ppmy.cn/news/1501291.html

相关文章

大模型学习笔记十四:Agent模型微调

文章目录 一、大模型需要Agent技术的原因二、Prompt Engineering可以实现Agent吗?(1)ReAct原理展示和代码(2)ModelScope(3)AutoGPT(4)ToolLLaMA 三、既然AutoGPT可以满足…

无人机之环保监控篇

随着科技的不断进步,无人机作为一种创新的技术手段,在环保监控领域发挥着越来越重要的作用。 一、覆盖范围广 无人机能够轻松覆盖广阔的地理区域,无论是偏远的山区、广袤的森林还是大型的工业园区。相比传统的地面检测方式,其不…

DP 整数拆分不同的二叉搜索树 DAY21

整数拆分? 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。示例 2: 输入: n 10 输…

Servlet详解(超详细)

Servlet详解 文章目录 Servlet详解一、基本概念二、Servlet的使用1、创建Servlet类2、配置Servleta. 使用web.xml配置b. 使用注解配置 3、部署Web应用4、处理HTTP请求和生成响应5、处理表单数据HTML表单Servlet 6、管理会话 三、servlet生命周期1、加载和实例化2、初始化3、 请…

优选算法之前缀和(上)

目录 一、【模板】一维前缀和 1.题目链接:DP34【模板】前缀和 2.题目描述: 3.解法(前缀和) 🍃算法思路: 🍃算法代码: 二、【模板】二维前缀和 1.题目链接:DP35【…

深入解读 | Spring Boot中的Maven依赖管理

Maven依赖管理 大家好,今天我们来聊聊Spring Boot中的Maven依赖管理。无论是初学者还是有经验的开发者,理解和掌握Maven依赖管理对于使用Spring Boot开发高效、稳定的应用程序至关重要。在这篇文章中,我们将详细解读Spring Boot中的Maven依赖…

新手vue学习问题汇总(自用)(长期更新)

1.export default export default 是 ES6 模块语法,用于导出模块的默认成员。在 Vue.js 中,通常用来导出一个组件对象,使其可以在其他文件中被导入并使用。 2.props props 是组件接收外部数据的方式。父组件可以通过向子组件传递 props 来…

Oracle自动统计信息收集问题排查脚本

Oracle自动统计信息收集问题排查脚本 检查近期的统计信息自动收集情况: set lines 300 col client_name for a50 col window_name for a30 col job_name for a40 col job_start_time for a60 col job_duration for a50 col window_start_time for a40 col window_end_time fo…