要爬取的电影网址: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()
虽然运行完成 并且结果也没有任何问题,但是我们会发现程序在运行速度上会有点慢,再加上网络下载速度问题,这时候我们会想到运用线程来提高程序的运行速度!
关于线程的代码周末会更新!!!