ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

我用 Python 代码爬取“学习”了全网各种风格妹子1T的小图片

2022-01-18 15:04:14  阅读:229  来源: 互联网

标签:1T get Python 爬取 headers url1 print path requests


前言

很久以前我就想试试python是怎么爬妹纸的图片的,感觉很牛的样子,相信大家都有这种想法,所以,我这次试了一下,效果还不错,图片很有味,滋滋~~,不相信的各位狼友来评鉴一下,爬图的数量根据你输入的页数确定,大家要相信纯洁的我只是适当的爬了几张图,用来学习技术,我发四。

爬取妹子图片准备工作

  • Python3.x
  • Pycharm等随意一款编辑器
  • os库、requests库、pyquery库

安装库

cmd安装方式

打开cmd控制台
image.png

在控制台分别输入以下代码:

pip install requests

image.png

pip install pyquery

image.png
其中,os库为Python3内置库,不需要安装,至此,准备工作完成。

pycharm安装方式

打开pycharm>file>settings
image.png
image.png

image.png
将所需库安装即可,至此,准备工作完成。

开始编程

主函数

首先先确定目标:优美图库国内类别http://www.umei.cc/p/gaoqing/cn/
image.png
然后,观察规律:
第一页URL为http://www.umei.cc/p/gaoqing/cn
点下一页URL为http://www.umei.cc/p/gaoqing/cn/2.htm
再点下一页URL为http://www.umei.cc/p/gaoqing/cn/3.htm
image.png
、、、、、、
然后再点击第一页发现网址变成了http://www.umei.cc/p/gaoqing/cn/1.htm
所以,我们就得到了屠龙技。代码如下:

# 控制代码运行过程,在文件作为脚本时才会被执行,而import到其他脚本中是不会被执行的
if __name__ == '__main__':                      
    z = 1
    url = 'http://www.umei.cc/p/gaoqing/cn/'     # 初始目标URL
    for i in range(z, z+1):                      # z+1可以换成z+n (n=1,2,3......)
        url1 = url+str(i)+'.htm'
        print(url1)                             
        get_url1(url1)                           # 调用get_url1函数获取图片

编写图片抓取函数get_url1
然后我们还有找规律,我们点开第一页第一套图
image.png
image.png
为了简便,我们就爬取每页各个套图里的第一张图片,当然也可以爬取更多的图。我们可以发现各个套图里的第一张图片URL根本没有规律,所以,我们这是就要借助pyquery网页解析库啦。
我用的是谷歌浏览器,打开开发者工具,根据图片找到套图里第一张图片的链接,可以多找几张,你会发现他们好像有规律,我们只要搞到红框框里的链接就好啦。
image.png
image.png
image.png
所以函数get_url1代码如下:

def get_url1(url):
# 模拟浏览器,不用改,几乎固定
    headers = {
                'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) '
                              'AppleWebKit/537.36 (KHTML, like Gecko)'
                              ' Chrome/58.0.3029.110 Safari/537.36'
                              }
    urllib3.disable_warnings()                                    #  预警作用
    html = requests.get(url, headers=headers, verify=False).text  # 获得elements里的所有代码
    doc = pq(html)                                                # 解析代码
    a = doc('.TypeList .TypeBigPics')
    for item in a.items():
        b = item.attr('href')              # 获得herf里的所有代码
    #    print(b,'\n','\n')
        html2 = requests.get(b,headers = headers,verify = False).text
        doc2 = pq(html2)
        c = doc2('.ImageBody img')         # 获得ImageBody img里的代码   
        for item2 in c.items():
          d = item2.attr('src')            # 获得src里的链接
          print(d)

# 保存文件
          root = "D://pics22223//"   # 根目录
          path=root+d.split('/')[-1] 
          # 根目录加上url中以反斜杠分割的最后一部分,即可以以图片原来的名字存储在本地
          try:
              if not os.path.exists(root):    # 判断当前根目录是否存在
                  os.mkdir(root)              # 创建根目录
              if not os.path.exists(path):    # 判断文件是否存在
                  r=requests.get(d)
                  with open(path,'wb')as f:
                      f.write(r.content)
                      f.close()
                      print("文件保存成功",'\n','\n')
              else:
                  print("文件已存在")
          except:
              print("爬取失败")

完整代码

# -*- coding: utf-8 -*-
"""
Created on Sun Dec 30 15:38:25 2018

@author: 球球
"""

import requests
import os
from requests.packages import urllib3
from pyquery import PyQuery as pq


def get_url1(url):
    headers = {
                'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) '
                              'AppleWebKit/537.36 (KHTML, like Gecko)'
                              ' Chrome/58.0.3029.110 Safari/537.36'
                              }
    urllib3.disable_warnings()
    html = requests.get(url, headers=headers, verify=False).text
    doc = pq(html)
    a = doc('.TypeList .TypeBigPics')
    for item in a.items():
        b = item.attr('href')
    #    print(b,'\n','\n')
        html2 = requests.get(b,headers = headers,verify = False).text
        doc2 = pq(html2)
        c = doc2('.ImageBody img')
        for item2 in c.items():
          d = item2.attr('src')
          print(d)

          root = "D://pics22223//"   # 根目录
          path=root+d.split('/')[-1] 
          # 根目录加上url中以反斜杠分割的最后一部分,即可以以图片原来的名字存储在本地
          try:
              if not os.path.exists(root):    # 判断当前根目录是否存在
                  os.mkdir(root)              # 创建根目录
              if not os.path.exists(path):    # 判断文件是否存在
                  r=requests.get(d)
                  with open(path,'wb')as f:
                      f.write(r.content)
                      f.close()
                      print("文件保存成功",'\n','\n')
              else:
                  print("文件已存在")
          except:
              print("爬取失败")


if __name__ == '__main__':
    z = 1
    url = 'http://www.umei.cc/p/gaoqing/cn/'
    for i in range(z, z+1):
        url1 = url+str(i)+'.htm'
        print(url1)
        get_url1(url1)

各位狼友们,上文中需要用到的python工具破解版需要的找我,实名有用,还有各种相关的python学习资料,各位狼友,一个合格的lsp一定要有技术,添加下方微信来找我吧,赶紧动手试试。

在这里插入图片描述

标签:1T,get,Python,爬取,headers,url1,print,path,requests
来源: https://blog.csdn.net/Java_ZZZZZ/article/details/122497857

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有