python爬虫—贰—爬取图片

零、套图下载

本次爬取小姐姐的照片,作为初学者,这次爬取的是静态网站的照片

网站为https://www.vmgirls.com/

全部代码如下

import os
import time
import requests
from bs4 import BeautifulSoup

'''请求网页'''
headers = { 'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0' }
url = 'https://www.vmgirls.com/17167.html'   
web_req = requests.get(url,headers = headers)
html = web_req.text

'''BeautifulSoup'''
soup = BeautifulSoup(html,"html.parser")
web_link = soup.find_all('div',class_ = 'nc-light-gallery')
img = web_link[0].find_all('img')
nam = web_link[0].find_all('a')

'''文件创建'''
dir_name = nam[-1].get('title')
if not os.path.exists(dir_name):
	os.mkdir(dir_name)

'''下载图片'''
n = 0	
img_link = img[0].get('src')
for i in img:

	img_link = i.get('src')                #图片链接
	img_link = 'https:'+img_link
	img_res = requests.get(img_link,headers = headers)
	
	img_name = nam[-1].get('title')        #图片名称
	img_name = img_name+str(n)+'.jpeg'
	n = n + 1	
	
	with open(dir_name + '/' +img_name,'wb') as f:    #下载图片
		f.write(img_res.content)

	time.sleep(3)

第一步仍是利用requests库爬取网页的html代码,头部设置一个user-agent模拟浏览器访问,并将服务器回应进行打印

 在对相应进行BeautifulSoup格式的转换,然后找到关键代码并提取,与爬取小说部分类似

调用OS库执行系统相关操作,dir_name为一个文件夹名,其名称是从html代码中找到对应图片名称来命名的,然后判断电脑中是否有此文件夹,如果没有,则新建一个该名称的文件夹

 

在循环中遍历不同图片的链接,img_name为图片名称,采用与文件夹相同的方式命名,并在其后加数字作为区别,然后数字自增,每次循环都有一个不同的名字来给图片命名,最后再加上.jpeg作为图片格式名保存

在使用OS库中的方法下载图片,并在其后加三秒钟的延迟,模拟真人访问,循环结束后,文件夹中就会下载好图片

 下载完毕如图所示

 壹、首页分析

 网站首页获取各套图链接

import requests
from bs4 import BeautifulSoup

'''请求网页'''
headers = { 'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0' }
url = 'https://www.vmgirls.com/'   
web_req = requests.get(url,headers = headers)
html = web_req.text

'''BeautifulSoup'''
soup = BeautifulSoup(html,"html.parser")
urls = soup.find_all('a',class_ = 'media-content')


'''获取套图链接'''

pho_link = urls[input_num].get('href')
pho_link = 'https://www.vmgirls.com/'+pho_link
print(pho_link)

这一部分,主要是分析从首页中的代码如何提取对应套图的链接,因为只有找到各链接后才能对网站中所有套图进行爬取,将提取到的链接传入上一部分的代码,即可下载所有套图或者对应套图

贰、代码拼接

接下来只需要将以上两部分代码拼在一起,即可完成输入套图序号下载对应套图的功能

import time
import os
import requests
from bs4 import BeautifulSoup

'''原始网页'''
headers = { 'user-agent' : 'Mozilla/5.0 (Windows NT 10; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0' }
url = 'https://www.vmgirls.com/'   
web_req = requests.get(url,headers = headers)
html = web_req.text

soup = BeautifulSoup(html,"html.parser")
urls = soup.find_all('a',class_ = 'media-content')

'''获取套图链接'''
def get_url(input_num):
	
	pho_link = urls[input_num-1].get('href')
	pho_link = 'https://www.vmgirls.com/'+pho_link
	return pho_link


'''下载套图'''
def dl_pho(url):
	headers = { 'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Firefox/91.0' } 
	web_req = requests.get(url,headers = headers)
	html = web_req.text

	'''BeautifulSoup'''
	soup = BeautifulSoup(html,"html.parser")
	web_link = soup.find_all('div',class_ = 'nc-light-gallery')
	img = web_link[0].find_all('img')
	nam = web_link[0].find_all('a')

	'''文件创建'''
	dir_name = nam[-1].get('title')
	if not os.path.exists(dir_name):
		os.mkdir(dir_name)

	'''下载图片'''
	n = 0	
	img_link = img[0].get('src')
	for i in img:

		img_link = i.get('src')                #图片链接
		img_link = 'https:'+img_link
		img_res = requests.get(img_link,headers = headers)
		
		img_name = nam[-1].get('title')        #图片名称
		img_name = img_name+str(n)+'.jpeg'
		n = n + 1	
		
		with open(dir_name + '/' +img_name,'wb') as f:    #下载图片
			f.write(img_res.content)

		time.sleep(3)

input_num = 10
url = get_url(input_num)
dl_pho(url)

至此结束,只是一个很简单的程序,并没有完善完成,比如只能爬取十套图片,后期仍需在此基础上进行完善,并增加更多功能。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值