如何运用python爬虫爬取百度贴吧的静态图片?

embedded/2025/2/4 18:49:45/

爬取百度贴吧图片的详细步骤和代码实现

爬取百度贴吧图片的过程可以分为以下几个步骤:

  1. 分析网页结构:了解百度贴吧页面的HTML结构,找到图片的URL。
  2. 发送HTTP请求:使用requests库获取网页内容。
  3. 解析HTML内容:使用BeautifulSoup库解析HTML,提取图片URL。
  4. 下载并保存图片:将图片下载并保存到本地。

以下是一个完整的代码实现过程:

1. 分析网页结构

首先,打开百度贴吧的某个帖子页面,查看其HTML结构。图片通常嵌入在<img>标签中,需要提取src属性。

2. 发送HTTP请求

使用requests库发送HTTP请求,获取网页内容。为了防止被反爬虫机制拦截,可以设置User-Agent

3. 解析HTML内容

使用BeautifulSoup库解析HTML内容,提取图片URL。

4. 下载并保存图片

将图片下载并保存到本地。为了避免重复下载,可以检查文件是否已存在。

完整代码实现

Python复制

python">import requests
from bs4 import BeautifulSoup
import os
import random
import time# 获取网页内容
def get_html(url):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'}response = requests.get(url, headers=headers)if response.status_code == 200:return response.textelse:print(f"Failed to retrieve the webpage: {url}")return None# 解析HTML内容,提取图片URL
def extract_image_urls(html_content):soup = BeautifulSoup(html_content, 'html.parser')images = soup.find_all('img')  # 查找所有图片标签image_urls = []for img in images:img_url = img.get('src')  # 获取图片的src属性if img_url and img_url.startswith('http'):  # 确保是完整的URLimage_urls.append(img_url)return image_urls# 下载并保存图片
def download_images(image_urls, save_dir='images'):if not os.path.exists(save_dir):os.makedirs(save_dir)  # 创建保存图片的文件夹for i, img_url in enumerate(image_urls):img_name = os.path.basename(img_url)  # 从URL中提取文件名save_path = os.path.join(save_dir, img_name)if os.path.exists(save_path):print(f"{img_name} already exists. Skipping...")continuetry:response = requests.get(img_url, timeout=10)response.raise_for_status()  # 确保请求成功with open(save_path, 'wb') as img_file:img_file.write(response.content)  # 保存图片print(f"Downloaded {img_name}")except requests.RequestException as e:print(f"Failed to download {img_url}. Error: {e}")time.sleep(random.uniform(1, 3))  # 随机延时,避免被封禁# 主函数
def main():url = 'https://tieba.baidu.com/p/1234567890'  # 替换为目标帖子的URLhtml_content = get_html(url)if html_content:image_urls = extract_image_urls(html_content)download_images(image_urls)if __name__ == "__main__":main()

注意事项

  1. 遵守法律法规:在爬取网站内容时,务必遵守相关法律法规和网站的使用条款。
  2. 合理设置爬取频率:过于频繁的爬取请求可能会对目标网站造成压力,甚至导致你的IP被封禁。请合理设置爬取频率。
  3. 处理反爬虫机制:如果遇到反爬虫机制(如验证码、IP封禁等),可以尝试设置请求头、使用代理IP等方法。

通过上述步骤和代码,你可以成功爬取百度贴吧的图片,并解决一些常见的反爬虫问题。希望这些内容对你有所帮助。


http://www.ppmy.cn/embedded/159542.html

相关文章

玩转Docker | 使用Docker部署MySQL数据库

玩转Docker | 使用Docker部署MySQL数据库 玩转Docker | 使用Docker部署MySQL数据库一、Docker简介(一)Docker是什么(二)Docker的优势二、准备工作(一)安装Docker(二)了解MySQL数据库三、使用Docker部署MySQL数据库(一)拉取MySQL镜像(二)运行MySQL容器(三)验证MyS…

软件审批源码,软件审批流程,流程设计器(JAVA代码)

工作流集成实际项目案例&#xff0c;demo源码&#xff0c;文档管理审批系统源码提供完整代码。 源码获取方式&#xff1a;本文末个人名片直接获取。 前言 activiti工作流引擎项目&#xff0c;企业erp、oa、hr、crm等企事业办公系统轻松落地&#xff0c;请假审批demo从流程绘制…

网络测试-笔记

网络测试点 网络正常下 功能正常、页面数据正常 切后台、杀进程、锁屏、来电情况下&#xff0c;功能正常 无网络状态下 断网下的测试&#xff08;发包/回包断网&#xff09;&#xff0c;是否有网络异常提示&#xff0c;是否提示重连&#xff0c;无网络到有网页面恢复显示、网…

【LLM】Layer Norm 和 RMS Norm 的区别?

Layer Normalization&#xff08;Layer Norm&#xff09; 和 RMS Normalization&#xff08;RMS Norm&#xff09; 是深度学习中两种常用的归一化技术&#xff0c;它们的目的是通过规范化输入数据来加速训练并提高模型的稳定性。尽管它们的目标相似&#xff0c;但在实现方式和效…

Vue3学习笔记-模板语法和属性绑定-2

一、文本插值 使用{ {val}}放入变量&#xff0c;在JS代码中可以设置变量的值 <template><p>{{msg}}</p> </template> <script> export default {data(){return {msg: 文本插值}} } </script> 文本值可以是字符串&#xff0c;可以是布尔…

求水仙花数,提取算好,打表法。或者暴力解出来。

暴力解法 #include<bits/stdc.h> using namespace std; int main() {int n,m;cin>>n>>m;if(n<3||n>7||m<0){cout<<"-1";return 0;}int powN[10];//记录0-9的n次方for(int i0;i<10;i){powN[i](int)pow(i,n);}int low(int) pow(1…

【Qt】各种常用的按钮(button)

按钮是界面上经常使用的组件&#xff0c;常用的4种按钮组件是普通按钮(QPushButton类)、工具按钮(QToolButton 类)、单选按钮(QRadioButton类)、复选框(QCheckBox类)&#xff0c;它们都有共同的父类QAbstractButton(见图4-2)&#xff0c;所以它们有一些共有的特性。 Qt 中常用…

本地部署 DeepSeek-R1:简单易上手,AI 随时可用!

&#x1f3af; 先看看本地部署的运行效果 为了测试本地部署的 DeepSeek-R1 是否真的够强&#xff0c;我们随便问了一道经典的“鸡兔同笼”问题&#xff0c;考察它的推理能力。 &#x1f4cc; 问题示例&#xff1a; 笼子里有鸡和兔&#xff0c;总共有 35 只头&#xff0c;94 只…