首页 > 编程语言 >python-bs4获取图片

python-bs4获取图片

时间:2024-01-05 20:00:17浏览次数:40  
标签:fjtp www name 获取 python nanrentu bs4 42604

一、用一个实例来了解一下

 1、既然要用BeautifulSoup来解析,首先要把需要的模块导入;

import os            
import requests
from bs4 import BeautifulSoup

2、创建一个文件夹来存放要下载的数据:文件的名可以用户自定义

file_name = "imgs"
if not os.path.exists(file_name):
    os.makedirs(file_name) #创建

3、准备好URL链接并分析

url = 'https://www.nanrentu.cc/fjtp/42604.html'
#UA伪装
headers = {
    "User-Agent":
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0"
}
req = requests.get(url = url,headers = headers)        #get请求
soup = BeautifulSoup(req.text,'lxml')

4、分析数据结构

打开网页链接用,按F12后去分析数据结构格式,发现要下载的图片在一个<div class = " info-pic-list">里面,而且这个标签是唯一的

直接用find().find(()方法来获取图片名称和图片链接

pic = soup.find('div',class_='info-pic-list').find_all('img')

 下面的就是通过循环来获取每一个图片的名称,用alt标签来获取值;图片链接用src标签来获取,如下

for i in pic:
    src_url = i['src']                   #获取每一个链接
    pic_name = i['alt']                  #获取图片的名
    img_resp = requests.get(src_url)     #对每一个链接再请求
    content = img_resp.content           #调用.content方法来获取内容
    #下载本地
    with open(file_name + "/" + pic_name + ".png" ,mode= 'wb')as f:
        f.write(content)
        print(pic_name + "完成下载")
        f.close()
    req.close()

运行后:

二、改进

1、按照以上的方式只能获取到一个页面中的图片,多页面怎么获取;

2、分析后发现如下:具体有多少也,当点下末页的时候就可以看到数据一共八页

"""
https://www.nanrentu.cc/fjtp/42604.html
https://www.nanrentu.cc/fjtp/42604_2.html 
https://www.nanrentu.cc/fjtp/42604_3.html
https://www.nanrentu.cc/fjtp/42604_4.html
...

3、只需要在前面循环数组即可;当然sum= 8的这个值也可以在网页中获取到

sum  = 8;
for page in range(1,sum):
    url = f'https://www.nanrentu.cc/fjtp/42604_{page}.html'

标签:fjtp,www,name,获取,python,nanrentu,bs4,42604
From: https://www.cnblogs.com/zp513/p/17892642.html

相关文章

  • 【Python入门教程】读取图片信息最全教程(经纬度、偏转角、无人机影像、大疆)
    ​    通常读取图片的属性信息(如经纬度、拍摄时间、IMU数据等)都是通过exifread库进行读取,但是有些图片用这个库读取的效果不好。所以今天我就和大家分享一下如何使用Python读取图片属性信息的三种方法。1GDAL读取    GDAL库是用来处理卫星影像的库,它同样可......
  • 【Python&RS】栅格数据/图片位深度(bit)转换
    ​    关于栅格数据/图片的位深度(eg.8bit、16bit、32bit)转换之前我就发过一篇文章,【Python&RS】基于GDAL栅格数据/图片位深度(bit)转换。但是最近在使用的时候发现好像效果不行,有时候转换不成功,所以自己又研究了一下原理重新写了一份代码。今天就和大家分享一下如何使用Py......
  • 使用Python+selenium实现第一个自动化测试脚本
    这篇文章主要介绍了使用Python+selenium实现第一个自动化测试脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧最近在学web自动化,记录一下学习过程。此处我选用python3.6+selenium3.0,均用最新版本,以适应......
  • 30道python自动化测试面试题与答案汇总
    对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔,下面这篇文章主要给大家介绍了关于30道python自动化测试面试题与答案汇总的相关资料,需要的朋友可以参考下1、什么项目适合做自动化测试?关键字:不变的、重复的、规范的1)任务测试明确,需求不会频繁......
  • 学习python自动化——re正则
    re(正则)一、正则表达式作用正则表达式匹配指定规则的字符串二、re常用方法findall(pattern,string,flags=0):使用正则表达式,匹配所有符合条件的字符串,返回匹配到的所有子串,返回listpattern:正则表达式string:匹配的字符串flags=0:自定义的一些规则,比如不......
  • 使用Power Automate获取Dataverse数据作为Excel附件发送邮件
    这是我的第506篇原创文章,写于2024年1月5日。之前我写过一篇文章 使用PowerAutomate获取CDS中数据并附加到邮件中发送,发送的是CSV,如果要发送Excel呢?今天我根据 CreateAnExcelFileAndAddRowsUsingPowerAutomate 的文章来做个发送Excel的例子。我创建一个Manuallytrigg......
  • python与yum的修复
    装python3.10时删了python3.7,结果导致yum也完蛋了。恢复的思路:彻底删除python和yum后重装。一、删除:1、卸载现有pythonrpm-qa|greppython|xargsrpm-ev--allmatches--nodeps##卸载pythonwhereispython|xargsrm-frv##删除所有参与文件whereispython##......
  • 《python神经网络读书笔记》
    感想:人工智能是一门古老的学科,意思是人为的创造出和人类相似的智能体。在很多科幻影视作品中都有描述,甚至有的影视作品中不是使用计算机来实现人工智能。但是实际上这门学科在21世纪之前一直没什么进展。20世纪时,这门学科的主要研究方向是通过写一些强制判断逻辑来模拟智能体。......
  • Python flask 网页版执行shell命令并返回结果['GET', 'POST'] 混合方式
    前言全局说明Pythonflask网页版执行shell命令并返回结果一、需要安装的库pip3installflask-ihttp://pypi.douban.com/simple/--trusted-hostpypi.douban.compip3installsubprocess-ihttp://pypi.douban.com/simple/--trusted-hostpypi.douban.com二、inde......
  • optical strain(python)
    利用pythonopencv计算opticalstrainimportcv2importnumpyasnpclassOptFlowStrain:def__init__(self):self.TVL1=cv2.optflow.DualTVL1OpticalFlow_create()defrun(self,img0,img1):returnself.cal_opt_flow(img0,img1)def......