当前位置:   article > 正文

爬虫添加进度条_python 爬取图片 加入进度条

python 爬取图片 加入进度条

接着上一个项目改进加一个进度条

代码

import requests
import os
from bs4 import BeautifulSoup

def fetch(url):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
    }
    res = requests.get(url=url,headers=headers)
    res.encoding = res.apparent_encoding
    html = res.text
    soup = BeautifulSoup(html, 'lxml')
    parse(soup)


def parse(soup):
    all = soup.select('.g-gxlist-left >ul > li')
    for div in all:
        #图片名字
        txt = div.find('a', class_='m-name').get_text()
        #print(txt)
        # 段落
        text_p = div.find('p').get_text()
        #print(text_p)
        # 喜欢人数
        love = div.find('em', class_='u-like').get_text()
        #print(love)
        # 发布时间
        fbu = div.find('em', class_='u-date').get_text()
        #print(fbu)
        #图片
        div_img = div.find('img').get('src')
        #print(div_img)
        img(div_img,txt)


def img(div_img,txt):
    #打印图片地址
    # print(div_img)
    #图片二进制地址
    img_data = requests.get(url=div_img).content
    #print(img_a)
    #图片名称
    img_name = txt
    #print(img_name)
    # 新建一个文件夹保存所有图片
    if not os.path.exists('./tu/'):
        os.mkdir('./tu/')
    # 图片存储路径
    imgpath = './tu/' + img_name + '.jpg'
    with open(imgpath,'wb') as f:
        f.write(img_data)
        print(img_name,'下载成功')


    pass

def main():
    url = 'https://www.qqtn.com/qm/weimeiqm_1.html'
    fetch(url)

if __name__ == '__main__':
    main()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64

图片
请添加图片描述
图片二进制
请添加图片描述

下载图片保存文件
请添加图片描述

在这里插入图片描述

加了一个代码

import requests
import os
from bs4 import BeautifulSoup
from  tqdm import tqdm
def fetch(url):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36'
    }
    res = requests.get(url=url,headers=headers)
    res.encoding = res.apparent_encoding
    html = res.text
    soup = BeautifulSoup(html, 'lxml')
    parse(soup)
def parse(soup):
    all = soup.select('.g-gxlist-left >ul > li')
    for div in all:
        #图片名字
        txt = div.find('a', class_='m-name').get_text()
        #print(txt)
        # 段落
        text_p = div.find('p').get_text()
        #print(text_p)
        # 喜欢人数
        love = div.find('em', class_='u-like').get_text()
        #print(love)
        # 发布时间
        fbu = div.find('em', class_='u-date').get_text()
        #print(fbu)
        #图片
        div_img = div.find('img').get('src')
        #print(div_img)
        img(div_img,txt)
def img(div_img,txt):
    # 图片名称
    img_name = txt
    response = div_img
    response = requests.get(response,stream=True)
    print(response.headers)
    data_size = int(response.headers['Content-Length']) / 1024 / 1024  # 字节/1024/1024=MB
    # 新建一个文件夹保存所有图片
    if not os.path.exists('./tu/'):
        os.mkdir('./tu/')
    # 图片存储路径
    imgpath = './tu/' + img_name + '.jpg'
    with open(imgpath,'wb') as f:
        for data in tqdm(iterable=response.iter_content(1024 * 1024), total=data_size, desc=f'正在下载{img_name}', unit='MB'):
            f.write(data)
    pass
def main():
    url = 'https://www.qqtn.com/qm/weimeiqm_1.html'
    fetch(url)
if __name__ == '__main__':
    main()

tqdm库比较简单易懂的使用方法

使用tqdm必须知道的几个常见参数:
iterable:可迭代的对象 默认None
total:进度条总长度大小(int or float)默认None
desc:进度条的前缀内容(str)默认None
unit:进度条的单位(str)默认 it ,实际表带为 it/s

1.response.get(stream=True) 这一点必须为True,其详细解释请查iter_content函数的说明,或者找其他资料理解
2.iter_content(chunk_size) chunk_size参数的理解见下图

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
#进度条
from  tqdm import tqdm

#进度条代码部分
 # 图片名称
    img_name = txt
    response = div_img
    response = requests.get(response,stream=True)
    print(response.headers)
    data_size = int(response.headers['Content-Length']) / 1024 / 1024  # 字节/1024/1024=MB
    # 新建一个文件夹保存所有图片
    if not os.path.exists('./tu/'):
        os.mkdir('./tu/')
    # 图片存储路径
    imgpath = './tu/' + img_name + '.jpg'
    with open(imgpath,'wb') as f:
        for data in tqdm(iterable=response.iter_content(1024 * 1024), total=data_size, desc=f'正在下载{img_name}', unit='MB'):
            f.write(data)
    pass
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

参考文章
https://blog.csdn.net/xyl192960/article/details/113695405

总结
项目 主要难点就是创建文件路径并保存 到指定路径
要了解os 模块的基本用法

# 新建一个文件夹保存所有图片
	#如果没有则在当前路径创建一个文件
    if not os.path.exists('./tu/'):
        os.mkdir('./tu/')
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/130294
推荐阅读
相关标签
  

闽ICP备14008679号