二十七行代码实现对豆瓣电影图片的下载!(必看,超详细!!)

要爬取的电影网址:https://movie.douban.com/top250
话不多说 直接上代码!!!

代码实现:

from bs4 import BeautifulSoup
import requests
import os
download_path='./douban'
if not os.path.exists(download_path):
    os.makedirs(download_path)
def down_pic(url):
    headers={'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0'}
    r=requests.get(url,headers=headers)
    soup=BeautifulSoup(r.text,'lxml')
    content=soup.find('div',class_='article')
    images=content.find_all('img')
    pic_link_list=[image['src'] for image in images]
    pic_name_list=[image['alt'] for image in images]
    for  link ,name in zip(pic_link_list,pic_name_list):
        html=requests.get(link)
        with open(f'{download_path}/{name}.jpg','wb') as f:
            f.write(html.content)
    print(f'{url}所有图片下载完成')
def main():
    start_urls=['https://movie.douban.com/top250']
    for i in range(1,10):
        start_urls.append(f'https://movie.douban.com/top250?start={25 * i}&filter=')
    for url in start_urls:
        down_pic(url)
if __name__ == "__main__":
    main()     

我们来看一下运行的结果:

下图表示程序在运行中…… 左边的douban目录下的图片在不停的增加,看到此景会不会有一些成就感呢?
在这里插入图片描述

程序运行完成!!(因为是十个网页)终于运行完成了…(虽然耗时了一丢丢,但是看到了结果内心一定是澎湃的!)

在这里插入图片描述

可能你会想:博主只发一些代码,让我们这些萌新怎么看???
博主也想到了这个问题于是下面的内容来了!!!

代码实现加注释:(方便理解)

import requests
from bs4 import BeautifulSoup   
import os
#创建一个目录来存放爬取的内容
download_path='./douban'
if not os.path.exists(download_path):                 #判断目录是否存在
        os.makedirs(download_path)                    #如果不存在 则创建目录
def dowmload_pic(url):
    headers={'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0'}
    r=requests.get(url, headers=headers)
    soup=BeautifulSoup(r.text,'lxml')                 #解析网页结构,指定网页内容和解析器
    content= soup.find('div',class_='article')        #获取到了大的div
    images=content.find_all('img')                    #获取div下面的所有电影图片的img标签
    pic_link_list=[image['src'] for image in images]  #获取所有图片的下载链接
    pic_name_list=[image['alt'] for image in images   ]#获取所有图片的电影名字    
    for link, name in zip(pic_link_list,pic_name_list):
        html=requests.get(link)
        with open(f'{download_path}/{name}.jpg','wb') as f: #以二进制的形式写入到文件中
            f.write(html.content)
    print(f'{url}所有电影图片下载完成')
def main():
    start_urls = ['https://movie.douban.com/top250']   #定义访问的网页
    for i in range(1,10):                              #网页上总共有十个网页,再循环加上九个
        start_urls.append(f'https://movie.douban.com/top250?start={25 * i}&filter=')
    for url in start_urls:
        dowmload_pic(url)
        
if __name__ == "__main__":
    main()        

虽然运行完成 并且结果也没有任何问题,但是我们会发现程序在运行速度上会有点慢,再加上网络下载速度问题,这时候我们会想到运用线程来提高程序的运行速度!

关于线程的代码周末会更新!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值