浅学爬虫-python爬虫基础

ops/2024/10/10 13:22:28/
介绍与应用

Python爬虫是指利用Python编写程序从互联网上自动获取信息的技术。爬虫广泛应用于数据收集、价格监控、内容聚合、市场分析等领域。其基本原理是模拟浏览器发送HTTP请求获取网页数据,并通过解析HTML来提取所需的信息。

基本工具

Python中有许多强大的爬虫库,最常用的两个库是requestsBeautifulSoup

  • requests: 一个简单易用的HTTP库,用于发送HTTP请求。
  • BeautifulSoup: 一个HTML解析库,用于从网页中提取数据。
第一个爬虫

我们将编写一个简单的爬虫,从一个网页上提取数据。假设我们要爬取一个简单的网站,并从中提取标题和段落内容。

步骤1:安装所需库 首先,我们需要安装requestsBeautifulSoup库。可以使用以下命令安装:

pip install requests
pip install beautifulsoup4

步骤2:编写爬虫代码

import requests
from bs4 import BeautifulSoup# 目标URL
url = "http://example.com"# 发送HTTP请求
response = requests.get(url)# 检查请求是否成功
if response.status_code == 200:# 解析HTML内容soup = BeautifulSoup(response.content, 'html.parser')# 提取标题title = soup.find('h1').textprint(f"标题: {title}")# 提取段落内容paragraphs = soup.find_all('p')for idx, paragraph in enumerate(paragraphs, start=1):print(f"段落 {idx}: {paragraph.text}")
else:print(f"请求失败,状态码: {response.status_code}")

代码解释:

  1. 导入库: 导入requestsBeautifulSoup库。
  2. 目标URL: 设置我们要爬取的网页URL。
  3. 发送HTTP请求: 使用requests.get方法发送请求并获取响应。
  4. 检查请求状态: 检查请求是否成功(状态码200表示成功)。
  5. 解析HTML内容: 使用BeautifulSoup解析HTML内容。
  6. 提取标题: 使用soup.find方法查找标题标签并提取文本内容。
  7. 提取段落内容: 使用soup.find_all方法查找所有段落标签并提取文本内容。
使用代理池

在实际的爬虫应用中,我们可能会遇到IP被封禁的情况,这时我们可以使用代理池来绕过封禁。代理池是指一组代理服务器的集合,通过轮换使用这些代理服务器,可以避免被目标网站封禁。

设置代理池的步骤

步骤1:准备代理池 可以手动收集免费代理,也可以使用一些代理服务提供的API获取代理。

步骤2:编写使用代理池的爬虫代码

import requests
from bs4 import BeautifulSoup
import random# 目标URL
url = "http://example.com"# 代理池
proxy_pool = ['http://12.34.56.78:9100','http://23.45.67.89:9101','http://34.56.78.90:9102'
]# 随机选择一个代理
proxy = random.choice(proxy_pool)
proxies = {'http': proxy,'https': proxy
}# 发送HTTP请求
response = requests.get(url, proxies=proxies)# 检查请求是否成功
if response.status_code == 200:# 解析HTML内容soup = BeautifulSoup(response.content, 'html.parser')# 提取标题title = soup.find('h1').textprint(f"标题: {title}")# 提取段落内容paragraphs = soup.find_all('p')for idx, paragraph in enumerate(paragraphs, start=1):print(f"段落 {idx}: {paragraph.text}")
else:print(f"请求失败,状态码: {response.status_code}")

代码解释:

  1. 代理池: 创建一个包含多个代理的列表。
  2. 随机选择代理: 使用random.choice方法从代理池中随机选择一个代理。
  3. 设置代理: 创建一个字典,包含HTTP和HTTPS的代理设置。
  4. 发送HTTP请求: 使用代理发送请求。
结论

通过以上简单的例子,我们成功编写了一个基础的Python爬虫,并从网页中提取了标题和段落内容。同时,我们学习了如何使用代理池来绕过IP封禁。在接下来的文章中,我们将进一步探讨更多的爬虫技巧和高级应用。

介绍与应用

Python爬虫是指利用Python编写程序从互联网上自动获取信息的技术。爬虫广泛应用于数据收集、价格监控、内容聚合、市场分析等领域。其基本原理是模拟浏览器发送HTTP请求获取网页数据,并通过解析HTML来提取所需的信息。

基本工具

Python中有许多强大的爬虫库,最常用的两个库是requestsBeautifulSoup

  • requests: 一个简单易用的HTTP库,用于发送HTTP请求。
  • BeautifulSoup: 一个HTML解析库,用于从网页中提取数据。
第一个爬虫

我们将编写一个简单的爬虫,从一个网页上提取数据。假设我们要爬取一个简单的网站,并从中提取标题和段落内容。

步骤1:安装所需库 首先,我们需要安装requestsBeautifulSoup库。可以使用以下命令安装:

pip install requests
pip install beautifulsoup4

步骤2:编写爬虫代码

import requests
from bs4 import BeautifulSoup# 目标URL
url = "http://example.com"# 发送HTTP请求
response = requests.get(url)# 检查请求是否成功
if response.status_code == 200:# 解析HTML内容soup = BeautifulSoup(response.content, 'html.parser')# 提取标题title = soup.find('h1').textprint(f"标题: {title}")# 提取段落内容paragraphs = soup.find_all('p')for idx, paragraph in enumerate(paragraphs, start=1):print(f"段落 {idx}: {paragraph.text}")
else:print(f"请求失败,状态码: {response.status_code}")

代码解释:

  1. 导入库: 导入requestsBeautifulSoup库。
  2. 目标URL: 设置我们要爬取的网页URL。
  3. 发送HTTP请求: 使用requests.get方法发送请求并获取响应。
  4. 检查请求状态: 检查请求是否成功(状态码200表示成功)。
  5. 解析HTML内容: 使用BeautifulSoup解析HTML内容。
  6. 提取标题: 使用soup.find方法查找标题标签并提取文本内容。
  7. 提取段落内容: 使用soup.find_all方法查找所有段落标签并提取文本内容。
使用代理池

在实际的爬虫应用中,我们可能会遇到IP被封禁的情况,这时我们可以使用代理池来绕过封禁。代理池是指一组代理服务器的集合,通过轮换使用这些代理服务器,可以避免被目标网站封禁。

设置代理池的步骤

步骤1:准备代理池 可以手动收集免费代理,也可以使用一些代理服务提供的API获取代理。

步骤2:编写使用代理池的爬虫代码

import requests
from bs4 import BeautifulSoup
import random# 目标URL
url = "http://example.com"# 代理池
proxy_pool = ['http://12.34.56.78:9100','http://23.45.67.89:9101','http://34.56.78.90:9102'
]# 随机选择一个代理
proxy = random.choice(proxy_pool)
proxies = {'http': proxy,'https': proxy
}# 发送HTTP请求
response = requests.get(url, proxies=proxies)# 检查请求是否成功
if response.status_code == 200:# 解析HTML内容soup = BeautifulSoup(response.content, 'html.parser')# 提取标题title = soup.find('h1').textprint(f"标题: {title}")# 提取段落内容paragraphs = soup.find_all('p')for idx, paragraph in enumerate(paragraphs, start=1):print(f"段落 {idx}: {paragraph.text}")
else:print(f"请求失败,状态码: {response.status_code}")

代码解释:

  1. 代理池: 创建一个包含多个代理的列表。
  2. 随机选择代理: 使用random.choice方法从代理池中随机选择一个代理。
  3. 设置代理: 创建一个字典,包含HTTP和HTTPS的代理设置。
  4. 发送HTTP请求: 使用代理发送请求。
结论

通过以上简单的例子,我们成功编写了一个基础的Python爬虫,并从网页中提取了标题和段落内容。同时,我们学习了如何使用代理池来绕过IP封禁。在接下来的文章中,我们将进一步探讨更多的爬虫技巧和高级应用。


http://www.ppmy.cn/ops/86974.html

相关文章

C++ | string

前言 本篇博客讲解c中的string类的使用(常用接口) 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:C_普通young man的博客-CSDN博客 ⏩ 本人giee:普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见📝 &#x1f389…

火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 作者:王恩策、徐庆 火山引擎 LAS 团队 火山引擎数智平台 VeDI 是火山引擎推出的新一代企业数据智能平台,基于字节跳动数据平台多年的“数据…

C++11 可变参数模板

C11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板,相比C98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧&#x…

Spark实时(六):Output Sinks案例演示

文章目录 Output Sinks案例演示 一、​​​​​​​File sink 二、​​​​​​​​​​​​​​Memory Sink 三、​​​​​​​​​​​​​​Foreach Sink 1、​​​​​​​foreachBatch 2、​​​​​​​​​​​​​​foreach Output Sinks案例演示 当我们对流式…

测桃花运(算姻缘)的网站系统源码

简介: 站长安装本源码后只要有人在线测算,就可以获得收入哦。是目前市面上最火的变现利器。 本版本无后台,无数据。本版本为开发的逗号联盟接口版本。直接对接逗号联盟,修改ID就可以直接运营收费赚钱。 安装环境:PH…

TVM、LLVM、CUDA 是三个不同的项目或技术

TVM、LLVM、CUDA 是三个不同的项目或技术,它们在编程和计算领域中各有其独特的用途和优势。以下是它们之间的关系及各自用途的详细说明: TVM TVM (Tensor Virtual Machine) 是一个端到端的深度学习编译栈,用于优化和部署深度学习模型到各种硬件后端。其主要功能包括: 模型…

vue3项目导入本地图标

一、下载图标库到本地 例如阿里图标库:iconfont-阿里巴巴矢量图标库 选所需图标收藏入库 2.自己的图标库下载入库的图标 3.下载的压缩包解压到本地,并将解压的图标文件拖拽进新创建的svg文件夹中 二、安装插件 1.安装svg图标引用所需插件 //命令行 n…

OS—文件系统

目录 一. 文件系统结构I/O 控制层基本文件系统文件组织模块逻辑文件系统 二. 文件系统布局文件系统在磁盘中的结构主引导记录(MasterBoot Record,MBR)引导块(boot block)超级块(super block)文件系统中空闲块的信息 文件系统在内存中的结构 三. 外存空间管理空闲表法空闲链表法…