python爬取网站

devtools/2024/12/27 2:52:38/

这个示例将抓取一个假设的商品列表网站,提取商品名称和价格,并将数据保存到CSV文件中。

pip install requests beautifulsoup4 pandas

然后,使用以下代码:

python">import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
import random# 目标网址(假设为一个商品列表页面)
base_url = 'http://example.com/products?page={}'# 存储抓取的数据
data = []# 设置请求头
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}# 处理分页
for page in range(1, 6):  # 假设我们抓取前5页url = base_url.format(page)try:# 发送请求response = requests.get(url, headers=headers)response.raise_for_status()  # 检查请求是否成功# 解析网页内容soup = BeautifulSoup(response.text, 'html.parser')# 提取商品信息products = soup.find_all('div', class_='product')  # 假设商品信息在<div class='product'>中for product in products:name = product.find('h2', class_='product-name').text.strip()  # 假设商品名称在<h2 class='product-name'>中price = product.find('span', class_='product-price').text.strip()  # 假设价格在<span class='product-price'>中data.append({'name': name, 'price': price})# 随机延迟,避免被封禁time.sleep(random.uniform(1, 3))except requests.RequestException as e:print(f'请求错误: {e}')except Exception as e:print(f'解析错误: {e}')# 将数据保存为CSV文件
df = pd.DataFrame(data)
df.to_csv('products.csv', index=False, encoding='utf-8-sig')print('数据抓取完成,已保存为products.csv')

代码说明:

  1. 请求头:使用User-Agent伪装成浏览器,减少被封禁的风险。
  2. 分页处理:通过循环遍历多个页面,抓取每一页的数据。
  3. 异常处理:使用try...except块来捕获请求和解析中的错误,确保爬虫在遇到问题时不会崩溃。
  4. 随机延迟:在请求之间添加随机延迟,以减少被网站识别为爬虫的风险。
  5. 数据存储:使用pandas将抓取的数据存储为CSV文件,方便后续分析。

http://www.ppmy.cn/devtools/145693.html

相关文章

【提取学习通作业考试题目答案下载到本地或者POST数据库】

这段油猴&#xff08;Tampermonkey&#xff09;脚本是用来提取学习通&#xff08;Chaoxing&#xff09;平台上作业和考试题目的个人答案&#xff0c;并将其转换成Excel格式的题库&#xff0c;方便浏览或分享给他人。让我们逐步分析脚本的功能和结构&#xff1a; 脚本功能概述 …

WEB安全漏洞之路径遍历、跳转等漏洞解析

1. 路径遍历漏洞&#xff08;Path Traversal Vulnerability&#xff09; 路径遍历漏洞&#xff08;又叫目录遍历漏洞&#xff09;是指攻击者通过操控文件路径&#xff0c;使得应用访问服务器上未授权的文件或目录。攻击者通常通过操控文件路径中的 ../ &#xff08;路径上移符…

WPF制作图片闪烁的自定义控件

1.定义自定义控件 BlinkingImage.cs: using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media.Animation; using System.Windows.Media.Imaging;namespace YourNamespace {public class BlinkingImage : Control{public static rea…

STM32HAL库中RTC闹钟设置时分秒,年月日

在STM32的HAL库中&#xff0c;RTC&#xff08;实时时钟&#xff09;模块提供了多种功能来管理时间和日期&#xff0c;包括设置闹钟。对于RTC闹钟功能&#xff0c;确实主要集中在时、分、秒的配置上&#xff0c;但年、月、日也可以通过RTC日期寄存器进行设置&#xff0c;并且可以…

Flutter persistentFooterButtons控件详解

文章目录 1. persistentFooterButtons 的用途2. persistentFooterButtons 的定义3. persistentFooterButtons 的基本用法示例 1&#xff1a;简单的底部按钮解释&#xff1a; 4. persistentFooterButtons 的常见用法示例 2&#xff1a;使用不同的按钮类型解释&#xff1a;示例 3…

中关村科金海外外呼机器人如何通过大数据分析帮助跨境电商实现精准营销?

精准营销是企业提升市场竞争力、优化客户体验和实现可持续增长的关键策略。与传统的广撒网式营销不同&#xff0c;精准营销通过数据分析、人工智能和机器学习等先进技术&#xff0c;深入了解客户的偏好、行为和需求&#xff0c;从而提供高度个性化的产品和服务推荐。中关村科金…

快速理解24种设计模式

简单工厂模式 建立产品接口类&#xff0c;规定好要实现方法。 建立工厂类&#xff0c;根据传入的参数&#xff0c;实例化所需的类&#xff0c;实例化的类必须实现指定的产品类接口 创建型 单例模式Singleton 保证一个类只有一个实例&#xff0c;并提供一个访问他它的全局…

游戏引擎学习第52天

仓库 : https://gitee.com/mrxiao_com/2d_game 这节的内容相当多 回顾 在游戏中&#xff0c;实体被分为不同的类别&#xff1a;接近玩家的“高频实体”、距离较远并正在模拟的“低频实体”和不进行更新的“休眠实体”。这些实体会根据它们与玩家的距离进行处理&#xff0c;接…