Python爬虫实战(五) :下载百度贴吧帖子里的所有图片

2023-11-06

准备工作:
目标网址:https://tieba.baidu.com/p/5113603072
目的:    下载该页面上的所有楼层里的照片

第一步:分析网页源码
火狐浏览器  ---> 在该页面上右击 “查看页面源代码”,会打开一个新的标签页。

第二步:查找图片源地址
在新标签页上ctrl + F,输入jpg,找到第一个图片的源地址

<img class="BDE_Image" src="https://imgsa.baidu.com/forum/w%3D580/sign=29a773eb871001e94e3c1407880f7b06/50cf3bc79f3df8dc5b6bb593c711728b47102859.jpg"
BTW,怎么知道这个链接是不是第一张图,在查找jpg的时候,直接复制jpg网址在浏览器上输入回车对比即可,如果是超链接,直接点击即可。

查找后分析,所有楼层里面的图片都是这个格式<img class="BDE_Image" src=.......


第三步:使用强大BeautifulSoup,过滤标签img 和 class="BDE_Image",代码:
soup = BeautifulSoup(html, 'html.parser')
img_info = soup.find_all('img', class_='BDE_Image')

第四步:找出所有照片的原始链接,代码
for img in img_info:
    img.get("src")

第五步:下载
使用urllib.request.urlretrieve函数

整合后写成完整代码:


#coding=utf-8  
import requests
import urllib.request
from bs4 import BeautifulSoup

def getHtml(url):  
    page = requests.get(url)  
    html =page.text  
    return html

def getImg(html):
    soup = BeautifulSoup(html, 'html.parser')  
    img_info = soup.find_all('img', class_='BDE_Image')
    for index,img in enumerate(img_info,1):
        print ("正在下载第{}张图片".format(index))
        urllib.request.urlretrieve(img.get("src"),'%s.jpg' % index)  
        
if __name__=='__main__':
    url = "https://tieba.baidu.com/p/5113603072"
    html = getHtml(url)
    getImg(html)

    print ("OK!All DownLoad!")




我们看到该帖子远远不止一页,我们也想下载其他页面上的图片怎么办?

点击第二页,网址变为
https://tieba.baidu.com/p/5113603072?pn=2

将pn=2改成pn=1试试,回车,又发现与之前的网站https://tieba.baidu.com/p/5113603072指向的是同一个页面,因此可以循环来访问了。

代码:

#coding=utf-8
import re
import requests
import urllib.request 
from bs4 import BeautifulSoup

def getHtml(url):  
    page = requests.get(url)  
    html =page.text  
    return html

def getImg(html):
    soup = BeautifulSoup(html, 'html.parser')  
    img_info = soup.find_all('img', class_='BDE_Image')
    global index 
    for index,img in enumerate(img_info,index+1):
        print ("正在下载第{}张图片".format(index))
        urllib.request.urlretrieve(img.get("src"),'%s.jpg' % index)

def getMaxPage(url):
    html = getHtml(url)
    reg  = re.compile(r'max-page="(\d+)"')
    page = re.findall(reg,html)
    page = int(page[0])
    return page
    
        
if __name__=='__main__':
    url   = "https://tieba.baidu.com/p/5113603072"
    page  = getMaxPage(url)
    index = 0
    for i in range(1,page):
        url = "%s%s"  % ("https://tieba.baidu.com/p/5113603072?pn=",str(i))
        html = getHtml(url)
        getImg(html)
        
    print ("OK!All DownLoad!")


   





总结:BeautifulSoup功能真是太强大了。





本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python爬虫实战(五) :下载百度贴吧帖子里的所有图片 的相关文章

随机推荐

  • 【Apache Spark 】第 4 章Spark SQL 和 DataFrames:内置数据源简介

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 深度学习之图像的数据增强

    在图像的深度学习中 为了丰富图像训练集 更好的提取图像特征 泛化模型 防止模型过拟合 一般都会对数据图像进行数据增强 数据增强 常用的方式 就是旋转图像 剪切图像 改变图像色差 扭曲图像特征 改变图像尺寸大小 增强图像噪音 一般使用高斯噪音
  • 【计算机网络】RPC框架简介

    文章目录 RPC框架 RPC简介 什么是 RPC RPC原理 RPC 解决了什么问题 常见的 RPC 框架 HTTP和RPC比较 RPC框架 参考文档 RPC框架 RPC简介 什么是 RPC RPC Remote Procedure Cal
  • Python 打印网页为图片(基于edge)

    首先 如果你还没有安装Edge WebDriver 可以前往此处下载 https developer microsoft com en us microsoft edge tools webdriver 使用Chrome的话一样的下载 但是
  • linux基础(超级详细小白入门篇)

    1 基础介绍 1 1 unix 与 linux 区别 1 2 内核 Ubuntu 主要界面视图 因为窗口也是需要消耗资源的 CentOS 主要运用在服务器 linux启动时我们会看到许多启动信息 Linux 系统的启动过程并不是大家想象中的
  • 渗透初识之DVWA靶场搭建及使用(详细图文)

    目录 环境搭建 一 下载DVWA 二 安装DVWA 三 DVWA 使用 环境搭建 我将环境搭在win7 漏洞环境建议还是在虚拟机上搭建 一 下载DVWA 下载地址 Buy Steroids Online UK Anabolic Steroi
  • shell 学习记录(一)-Orange Pi Linux 5.4 SDK启动脚本build.sh

    前言 完全shell菜鸟 以Orange Pi Linux 5 4 SDK编译启动脚本build sh学习shell 对不懂的语法 命令记录 一 获取当前文件夹绝对路径 SRC dirname realpath BASH SOURCE 0
  • 带你玩转Visual Studio

    带你玩转Visual Studio 带你新建一个工程 工程目录下各文件的含义 解决方案与工程 在这之前先了解一个概念 解决方案与工程 解决方案 Solution 一个大型项目的整体的工作环境 工程 Project 一个解决方案下的一个子工程
  • 小程序中如何将页面生成图片?

    记一次开发一款小程序遇到的需求 根据用户填写的商品信息 生成一张可分享的购买海报 简单的看了一下小程序的canvas组件 是可以满足这个需求的实现 所以就开始规划 组织代码了 1 小程序组件 canvas 是可以实现的 这里我就不多说了 但
  • 英语怎么学

    我是怎么从零开始学英语的 哈哈哈 在很多人眼里 英语难 和我以前的认为一样 其实英语是最好学的一个语言 很有规则 远比我们的母语中文好学 多数不要一年 就能够过关了 但要友技巧 很多人一定会认为我晕了头 不要急 等我说完了 你再说这话也不迟
  • MySQL 利用UDF执行命令

    UDF即User Defined Functions lib mysqludf sys 在github的介绍 A UDF library with functions to interact with the operating syste
  • Openwrt-搭建一个Git服务器

    简介 对于Git文件的管理 一直是一个比较困扰的问题 目前是流行的Github是一个不错的选择 但是默认是开源的 如果是一些不愿共享出来的文件代码 我们最好是搭建一个自己的服务器 在git官方网站有git服务器的搭建方法 今天 我要说的是在
  • PYQT5表格及样式设置方法

    PYQT5遇到的问题和解决 1 给table添加样式 table 透明度设置 构造一个含图片的label 再用setCellWidget把label插入单元格 1 给table添加样式 1 qApp setStyleSheet font s
  • 《因果学习周刊》第6期:因果推荐系统

    No 06 智源社区 因果学习组 因 果 学 习 研究 观点 资源 活动 关于周刊 因果学习作为人工智能领域研究热点之一 其研究进展与成果也引发了众多关注 为帮助研究与工程人员了解该领域的相关进展和资讯 智源社区结合领域内容 撰写了第6期
  • 【GeekUninstaller】卸载程序

    软件介绍 删除不了的文件 或者软件可以下载试试不需要安装 文章目录 前言 一 如何下载 二 使用步骤 1 安装完之后自动打开 前言 GeekUninstallers是一款高效 快速 小巧 免费的软件卸载与清理工具 旨在帮助用户删除系统上安装
  • caffe源码追踪--syncedmem

    首先来看看caffe include caffe syncedmem hpp ifndef CAFFE SYNCEDMEM HPP define CAFFE SYNCEDMEM HPP include
  • 深度学习之 python pandas

    在数据科学领域 pandas是非常有用的工具 在数据科学细分领域大数据 通常和深度学习有关 这部分 本篇博客从pandas重要函数开始 到数据变换以及数据分析 pandas提供了数据变换 数据清理 数据可视化以及数据提取等主要数据处理功能
  • tar -xf_linux 解压缩命令tar

    linux环境下常见的压缩文件格式 tar tar gz tar bz2 tar xz 参数 c create create a new archive 创建文件 x extract get extract files from an ar
  • 静态资源上传七牛云

    一 七牛云SDK function 请参考demo的index js中的initQiniu 方法 若在使用处对options进行了赋值 则此处config不需要赋默认值 init options 即updateConfigWithOptio
  • Python爬虫实战(五) :下载百度贴吧帖子里的所有图片

    准备工作 目标网址 https tieba baidu com p 5113603072 目的 下载该页面上的所有楼层里的照片 第一步 分析网页源码 火狐浏览器 gt 在该页面上右击 查看页面源代码 会打开一个新的标签页 第二步 查找图片源