站长素材网站获取

站长素材网站获取

从站长素材网站爬取风景图片时,你可以按照以下详细步骤进行操作:

导入必要的库

首先,确保你已经安装了所需的库:os、urllib.request 和 lxml

import o
import urllib.request
from lxml import etree

创建请求对象

定义一个函数 create_request(),它将接受一个整数参数 page,代表页面编号。这个函数会根据页面编号构建请求对象,包括URL和请求头信息。

def create_request(page: int):     
"""    
请求对象定制 
def create_request(page: int):    
 """     
请求对象定制   
  :param page:页码    
 :return:请求对象定制的结果     
"""     
# 访问地址    
if page == 1:         
url = 'https://sc.chinaz.com/tupian/fengjing.html'#换成你想要的图片地址     
else:       
  url = f"https://sc.chinaz.com/tupian/fengjing_{page}.html"#需观察切换页码是url的变化     
# 请求头     
headers = {       
  'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Hot Lingo 2.0)'     
} 
return urllib.request.Request(url=url, headers=headers)

获取网页源码

定义一个函数 get_content(),它将接受一个请求对象作为参数,并返回网页的源码。

def get_content(request):    
 """     
获取网页源码     
:param request: 请求对象定制的结果    
 :return: 获取的网页源码    
 """    
 response = urllib.request.urlopen(request)    
 content = response.read().decode('UTF-8')     
return content

下载图片

定义一个函数 download_images(),它将接受网页的源码和一个文件夹名称作为参数,然后从源码中提取图片链接,并将图片下载到指定的文件夹中。

def download_images(content, folder_name):   
  """     
下载图片到指定文件夹  
   :param content: 网页源码     
:param folder_name: 文件夹名称   
  """   
  if not os.path.exists(folder_name):    
     os.makedirs(folder_name) 
 # 创建文件夹    
 tree = etree.HTML(content)     src_list = tree.xpath('//img/@data-original') 
 # 获取图片地址,换成你想要的图片地址    
 name_list = tree.xpath("//a[@class='name']/@title")  
# 获取图片名,换成你想要的图片地址     
for name, src in zip(name_list, src_list):        
 url = 'https:' + src      
   file_path = os.path.join(folder_name, name + '.jpg')       
  urllib.request.urlretrieve(url, file_path)

主程序

在主程序中,用户输入起始页码和结束页码,然后循环遍历这些页面,调用前面定义的函数来执行爬取和下载操作。

if __name__ == '__main__':     start_page = int(input('请输入起始页码'))    
 end_page = int(input("请输入结束页码"))   
  folder_name = "fish_pictures"  # 新建文件夹名称为 "fish_pictures" 
    for page in range(start_page, end_page + 1):   
      # (1)请求对象定制       
  request = create_request(page)     
    # (2)获取网页源码      
   content = get_content(request)       
  # (3)下载图片到指定文件夹        
download_images(content, folder_name) print("图片已保存在名为 'fish_pictures' 的文件夹中。")

完整代码:

import os import urllib.request from lxml import etree def create_request(page: int): 
"""
 请求对象定制 :param page:页码 :return:请求对象定制的结果
 """ 
# 访问地址 if page == 1: url = 'https://sc.chinaz.com/tupian/fengjing.html' 
else: url = f"https://sc.chinaz.com/tupian/fengjing_{page}.html" 
# 请求头 headers = { 'User-Agent': 'Mozilla/4.0 (compatible; MSIE 7.0;
 Windows NT 5.1; Trident/4.0; Hot Lingo 2.0)' } return urllib.request.Request(url=url, headers=headers) def get_content(request): 
""" 
获取网页源码 :param request: 请求对象定制的结果 :return: 获取的网页源码 
""" 
response = urllib.request.urlopen(request) content = response.read().decode('UTF-8') return content def download_images(content, folder_name): 
""" 
下载图片到指定文件夹 :param content: 网页源码 :param folder_name: 文件夹名称 
""
 if not os.path.exists(folder_name): os.makedirs(folder_name) 
# 创建文件夹 tree = etree.HTML(content) src_list = tree.xpath('//img/@data-original') 
# 获取图片地址 name_list = tree.xpath("//a[@class='name']/@title") 
# 获取图片名 for name, src in zip(name_list, src_list): url = 'https:' + src file_path = os.path.join(folder_name, name + '.jpg') urllib.request.urlretrieve(url, file_path) if __name__ == '__main__': start_page = int(input('请输入起始页码')) end_page = int(input("请输入结束页码")) folder_name = "fish_pictures"
 # 新建文件夹名称为 "fish_pictures" for page in range(start_page, end_page + 1): # (1)请求对象定制 request = create_request(page)
 # (2)获取网页源码 content = get_content(request)
 # (3)下载图片到指定文件夹 download_images(content, folder_name) print("图片已保存在名为 'fish_pictures' 的文件夹中。")
© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 共2条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称常用语 夸夸
夸夸
还有吗!没看够!
表情代码图片
    • 头像MyGalaxyWay0