清欢吖 发表于 2023-5-13 21:48

彼岸网美女壁纸爬虫

"""
地址:http://www.netbian.com/
可以根据网页分类进行修改
请先自行在目录内创建 美女图片 文件夹
@清欢吖

"""
#导入 requests 和 etree 模块
import requests
from lxml import etree

#循环下载75页的图片
for i in range(75):
    #第一页的地址和后面页的地址不同,需要分别处理
    if i==0:
      url = "http://www.netbian.com/meinv/index.htm"
      i +=1
    else:
      url = 'http://www.netbian.com/meinv/index_' + str(i + 1) + '.htm'

    #设置协议头
    headesp = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.35'}

    #发送get请求并获取响应且设置编码
    resp = requests.get(url,headers=headesp)
    resp.encoding = resp.apparent_encoding

    #将响应内容解析为etree对象
    xp = etree.HTML(resp.text)

    #获取每页中的图片详情页链接
    img_url = xp.xpath("/html/body/div[@class='wrap clearfix']/div[@id='main']/div[@class='list']/ul/li/a/@href")
    for n in img_url:
      #根据图片详情页链接再次发送get请求并获取图片地址和名称
      resp = requests.get('http://www.netbian.com' + n)
      resp.encoding = resp.apparent_encoding
      xp = etree.HTML(resp.text)
      img_urls = xp.xpath('//div[@class="pic"]/p/a/img/@src')
      img_name = xp.xpath('//div[@class="pic"]/p/a/img/@alt')

      #循环下载每个图片
      for u, n in zip(img_urls, img_name):
            print(f'图片名:{n} 地址:{u}')
            img_resp = requests.get(u)
            with open(f'./美女图片/{n}.jpg', 'wb') as f:
                f.write(img_resp.content)

大白baymax 发表于 2023-5-14 07:24

链接:https://pan.baidu.com/s/1YAeLHwtzDqLSu5upeg2mNA
提取码:1esa
给大家分享一个已经爬完的RAR压缩包的文件。

caac 发表于 2023-5-14 11:54

本帖最后由 caac 于 2023-5-14 11:55 编辑

如有美女的图片分享示例更好,谢分享;www

思念说给风听 发表于 2023-5-14 07:12

谢谢分享!

qinni8513 发表于 2023-5-14 07:19

不错不错哈

winsphinx 发表于 2023-5-14 07:34

本帖最后由 winsphinx 于 2023-5-14 07:40 编辑

哈,楼主,我之前也弄了一个下载netbian后作为壁纸的程序,发上来请指正。
稍有不同的是,我用了中图。(楼主每页的是小图,点击后打开的页面是中图,当然真正的大图是要付费的了)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import random
import tempfile

import requests
import win32api
import win32con
import win32gui
from lxml import etree
from PIL import Image


class Wallpaper:
    def __init__(self):
      self.image = os.path.join(tempfile.gettempdir(), "wallpaper.jpg")

    def crawl(self):
      base_url = "https://pic.netbian.com"# 基础页
      page_url = base_url + "/4kmeinv"# 分栏页
      headers = {
            "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36"
      }
      page = requests.get(url=page_url, headers=headers)
      tree = etree.HTML(page.text)
      max_page = tree.xpath('//div[@class="page"]/a/text()')# 获取分栏页最大页数

      i = random.randint(1, int(max_page))# 随机进入页面
      if i == 1:
            page_url = page_url
      else:
            page_url = page_url + "/index_" + str(i) + ".html"

      page = requests.get(url=page_url, headers=headers)# 获取此页面元素列表
      tree = etree.HTML(page.text)
      max_img = len(tree.xpath('//*[@id="main"]/div/ul/li'))
      img = tree.xpath('//*[@id="main"]/div/ul/li[' + str(random.randint(1, max_img)) + "]/a/@href")# 随机获取图像元素

      new_url = base_url + img# 跳转新图像页面
      new_page = requests.get(url=new_url, headers=headers)
      new_tree = etree.HTML(new_page.text)
      new_img = new_tree.xpath('//*[@id="img"]/img/@src')# 获取此图像地址

      image_url = base_url + new_img
      with open(self.image, "wb") as f:
            f.write(requests.get(image_url).content)
      return self

    def setup(self):
      keyex = win32api.RegOpenKeyEx(win32con.HKEY_CURRENT_USER, "Control Panel\\Desktop", 0, win32con.KEY_SET_VALUE)
      win32api.RegSetValueEx(keyex, "WallpaperStyle", 0, win32con.REG_SZ, "6")
      win32api.RegSetValueEx(keyex, "TileWallpaper", 0, win32con.REG_SZ, "0")
      win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, self.image, win32con.SPIF_SENDWININICHANGE)
      """
      WallpaperStyle = 10 and TileWallpaper = 0 make walpaper filled
      WallpaperStyle = 6and TileWallpaper = 0 make walpaper fitted
      WallpaperStyle = 2and TileWallpaper = 0 make walpaper stretched
      WallpaperStyle = 0and TileWallpaper = 0 make walpaper centered
      WallpaperStyle = 0and TileWallpaper = 1 make walpaper tiled
      """


if __name__ == "__main__":
    wallpaper = Wallpaper()
    wallpaper.crawl().setup()

空中的水 发表于 2023-5-14 08:00

好坏好坏好坏的。

2001gwx 发表于 2023-5-14 08:19

谢谢楼主,美女什么的我最喜欢了{:1_899:}

清欢吖 发表于 2023-5-14 08:49

winsphinx 发表于 2023-5-14 07:34
哈,楼主,我之前也弄了一个下载netbian后作为壁纸的程序,发上来请指正。
稍有不同的是,我用了中图。( ...

你好,你这个下载的是 https://pic.netbian.com 的,我那个下载的是http://www.netbian.com/,这两个网页是不一样的

wushengli 发表于 2023-5-14 09:07

感谢大佬分享,学到了.

不搭落俗笑忘书 发表于 2023-5-14 09:27

感觉还不错诶..嘿嘿
页: [1] 2 3 4 5 6 7 8
查看完整版本: 彼岸网美女壁纸爬虫