当前位置: 首页 > news >正文

昆山网站建设公司哪家好主要是WordPress

昆山网站建设公司哪家好,主要是WordPress,无锡网站制作优化排名,网站底部信息python抓取优美图库小姐姐图片 整体功能概述 这段 Python 代码定义了一个名为 ImageDownloader 的类,其主要目的是从指定网站(https://www.umei.cc)上按照不同的图片分类,爬取图片并保存到本地相应的文件夹中。不过需要注意&…

python抓取优美图库小姐姐图片

整体功能概述

这段 Python 代码定义了一个名为 ImageDownloader 的类,其主要目的是从指定网站(https://www.umei.cc)上按照不同的图片分类,爬取图片并保存到本地相应的文件夹中。不过需要注意,未经授权爬取网站数据可能存在合法性问题,代码仅用于学习代码逻辑和合理的测试场景等情况。

代码思路详细拆解

  1. 类的初始化(__init__ 方法)

    • 定义了 base_url 变量,用于存储目标网站的基础地址,即 https://www.umei.cc
    • 创建了一个空字典 category_urls,后续将用于存放不同图片分类对应的具体页面链接。
    • 设置了请求头 headers,模拟浏览器发起请求,使服务器更有可能正常响应请求,避免因反爬机制而拒绝访问。
  2. 创建分类文件夹(create_category_directories 方法)

    • 遍历 category_urls 字典中的每个分类名称(键)。
    • 针对每个分类名称尝试创建对应的文件夹,若文件夹已存在,则打印提示信息跳过创建;若创建过程中出现其他 OSError 类型的错误,则打印相应的错误提示。
  3. 发送 HTTP GET 请求(send_get_request 方法)

    • 接收一个 url 参数,使用 requests 库发送 GET 请求,并传入设定好的请求头。
    • 若请求过程中出现 requests.RequestException 异常(比如网络连接问题、服务器拒绝访问等),则打印异常相关信息,并返回 None,表示请求失败;若请求成功,则设置响应内容的编码为 utf-8,然后返回响应对象。
  4. 下载图片(download_image 方法)

    • 接收图片名称 image_name 和图片的 URL image_url 作为参数。
    • 首先从图片 URL 中提取文件后缀名(例如 .jpg.png 等),然后通过调用 send_get_request 方法获取图片的二进制内容。
    • 使用 with 语句以二进制写入模式打开一个本地文件(文件名由图片名称和后缀名组成),并将获取到的图片二进制内容写入该文件,以此实现图片的下载保存。
  5. 主流程(main 方法)

    • 第一步,先向网站的图片分类主页面(base_url + '/weimeitupian/')发送 GET 请求,若请求成功,使用 BeautifulSoup 库解析返回的 HTML 页面内容。
    • 第二步,通过 CSS 选择器从解析后的页面中查找不同的图片分类元素,提取分类名称和对应的链接,并将它们存入 category_urls 字典中。
    • 第三步,调用 create_category_directories 方法,依据 category_urls 字典中的分类名称创建对应的本地文件夹。
    • 第四步,遍历 category_urls 字典,针对每个分类,再次向其对应的页面发送 GET 请求,若请求成功,同样使用 BeautifulSoup 解析页面,获取该分类下每张图片相关的元素信息。
    • 第五步,对于每张图片,提取图片名称以及图片详情页的链接,接着向图片详情页发送 GET 请求,若该请求也成功,继续解析详情页找到真正的图片 URL,最后调用 download_image 方法将图片下载保存到对应的分类文件夹下,同时在控制台打印保存成功的图片名称信息;在各个环节如果出现请求失败或者找不到相应元素等情况,会打印对应的提示信息,说明图片保存失败以及失败的原因。
  6. 实例化类并执行主流程
    在代码的最后,实例化了 ImageDownloader 类,并调用其 main 方法启动整个图片爬取和保存的流程。

# encoding=utf-8
import requests
from bs4 import BeautifulSoup
import osclass ImageDownloader:def __init__(self):self.base_url = 'https://www.umei.cc'self.category_urls = {}self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'}def create_category_directories(self):"""创建以图片分类名称为名称的文件夹"""for category_name in self.category_urls:try:os.mkdir(f'./{category_name}')except FileExistsError:print(f"文件夹 {category_name} 已存在,跳过创建")except OSError as e:print(f"创建文件夹 {category_name} 时出现错误: {e}")def send_get_request(self, url):"""发送HTTP GET请求并返回响应对象,设置正确的编码"""try:response = requests.get(url, headers=self.headers)response.encoding = 'utf-8'return responseexcept requests.RequestException as e:print(f"请求 {url} 出现异常: {e}")return Nonedef download_image(self, image_name, image_url):"""根据给定的名称和图片URL,下载图片并保存到本地对应的文件夹中"""file_extension = image_url.split('.')[-1]  # 获取后缀名image_content = self.send_get_request(image_url).contentwith open(f'./{image_name}.{file_extension}', 'wb') as file:file.write(image_content)def main(self):main_page_response = self.send_get_request(self.base_url + '/weimeitupian/')if main_page_response:main_page_soup = BeautifulSoup(main_page_response.text, 'html.parser')category_elements = main_page_soup.select('body > div.Clbc_top > div.taotu-nav')for category_element in category_elements:category_name = category_element.find('a').get_text()category_href = category_element.find('a').get('href')self.category_urls[category_name] = category_hrefself.create_category_directories()  # 创建文件夹# 进行保存数据for category_name, category_href in self.category_urls.items():category_page_response = self.send_get_request(self.base_url + category_href)if category_page_response:category_page_soup = BeautifulSoup(category_page_response.text, 'html.parser')image_elements = category_page_soup.select('#infinite_scroll > div')for image_element in image_elements:image_link_element = image_element.select_one('div.item_b.clearfix > div.title > span > a')if image_link_element:image_name = image_link_element.get_text()  # 图片名字image_href = 'https://www.umei.cc' + image_link_element.get('href')  # 子页面地址sub_page_response = self.send_get_request(image_href)if sub_page_response:sub_page_soup = BeautifulSoup(sub_page_response.text, 'html.parser')img_url_element = sub_page_soup.select_one('body > div:nth-child(3) > div.photo > div.big-pic > a > img')if img_url_element:img_url = img_url_element.get('src')self.download_image(category_name + '/' + image_name, img_url)print(category_name + '/' + image_name)  # 保存else:print(f"无法获取 {category_name + '/' + image_name} 的图片URL,保存失败")else:print(f"请求子页面 {image_href} 失败,{category_name + '/' + image_name} 保存失败")else:print(f"无法获取 {category_name} 分类下某张图片的元素信息,跳过保存")else:print(f"请求 {self.base_url + category_href} 失败,跳过该分类下图片保存")downloader = ImageDownloader()
downloader.main()

http://www.yayakq.cn/news/349692/

相关文章:

  • 查询网站备案密码是什么办办网上海
  • 美工个人网站化妆网站模板
  • 网站建设 甘肃网页开发
  • 收录网站工具莱芜招聘信息最新招聘2023年
  • 建设交易平台网站多少钱高新区网站建设 意义
  • 建个简单的网站app产品开发公司
  • 毕业设计网站开发的中期报告怎么做网站可手机看
  • 网站建设核电企业图标设计图案大全
  • 淄博网站制作升级优化购买 做网站 客户
  • 网站更新维护如何查找昆明做网站服务的公司
  • 工信部网站备案查询步骤详解做违法网站犯法吗
  • 徐州市贾汪区建设局网站中山网站建设多少钱
  • 展示网站模版源码有没有网站可以做发虚拟币
  • 潍坊昌大建设集团网站山东省建筑住房和城乡建设厅网站
  • 沭阳哪里有做网站推广的企业网站建设 信科网络
  • 网站制作专业的公司有哪些广州番禺邮政编码
  • 网站大全app下载wordpress 墙
  • 建设网站需要租用服务器一起做业英语网站
  • 做网站需要展示工厂么?深圳百度竞价推广
  • 广州建站商城网站规划和构成
  • 在哪个网站可以查做项目中标的网站怎么加关键词
  • 哪里做网站便宜自媒体视频剪辑去哪里学
  • 男女性做那个视频网站wordpress安装服务器配置
  • 电子商务网站建设与维护案例科技有限公司简介模板
  • Wordpress 百度云存储郑州有没有厉害的seo
  • 电商网站的建设背景龙岩天宫山住宿怎么订
  • 宿迁网站建设托管电子科技企业网站建设
  • 网站怎么做扫码微信支付接口潍坊尚呈网站建设公司 概况
  • wordpress能开发商城网站吗县级网站
  • 仙居网站建设网页游戏网站快手