浅学爬虫-python爬虫基础

news/2024/11/2 17:14:49/
介绍与应用

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/news/1503813.html

相关文章

thinkphp6项目初始化配置方案二次修正版本

数据返回统一格式 app/BaseController.php新增文件内容在末尾,并在构造函数中实例化数据模型类 // 成功统一返回格式 function Result($data, $msg , $code 200, $httpCode 200): \think\response\Json {$res [code > $code,msg > $msg,data > $data];return j…

【前端面试】八、工程化

目录 1.webpack 2 vite 3 gulp 1.webpack 基本知识: 定义:webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler)。当webpack处理应用程序时,它会在内部构建一个依赖图(dependency graph),该图会映射项目所需…

dbm和w的换算公式

光纤模块的功率转换 此工具用于转换功率计量单位分贝毫瓦 (dBmW) 和瓦特 (W)。 https://www.digikey.cn/zh/resources/conversion-calculators/conversion-calculator-dbm-to-watts

实现Obsidian PC端和手机端(安卓)同步

步骤 1:在PC端设置Obsidian 安装Obsidian和Git:确保你的PC上已经安装了Obsidian和Git。你可以从Obsidian官网和Git官网下载并安装。 克隆GitHub代码库:在PC上打开命令行(例如Windows的命令提示符或Mac/Linux的终端)&a…

【计算机网络】三次握手、四次挥手

问:三次握手 四次挥手 TCP 连接过程是 3 次握手,终止过程是 4 次挥手 3次握手 第一步:客户端向服务器发送一个带有 SYN(同步)标志的包,指示客户端要建立连接。 第二步:服务器收到客户端的请求…

修改mysql数据库root密码为空

use mysql update user set authentication_string where userroot; USE mysql; UPDATE user SET authentication_stringPASSWORD(新密码) WHERE Userroot; FLUSH PRIVILEGES;

会Excel就会sql?

如果你熟悉Excel,理解SQL(结构化查询语言,Structured Query Language)会相对容易,因为它们在某些功能上有着相似之处。SQL主要用于管理和操作数据库中的数据,而Excel则是电子表格软件,用于数据的组织、分析和可视化。下面我会用Excel的视角来帮你理解SQL的基本概念。 数…

什么是高性能计算平台?

随着信息技术的飞速发展,数据处理和分析能力已成为各行各业竞争的关键。在这一背景下,高性能计算平台(High Performance Computing, HPC)应运而生,以其强大的计算能力和高效的数据处理能力,为科研、工业、金…