• Python批量爬取美女写真集,只需27行代码,实现多页爬取!


    兄弟们,上一个系列大家多少有点不太喜欢,那今天上点不一样的。

    来吧,直接整活~

    先准备一下

    首先咱们需要安装一下这两个第三方模块

    requests >>>  # pip install requests
    parsel   >>>  # pip install parsel
    

    不会安装的小伙伴,键盘按住win+r 在弹出来的运行框 输入cmd 按确定,然后弹出黑色的框框,即命令提示符窗口,输入上面的注释 ,然后按回车即可安装成功。

     

    实现步骤

    第一步:找数据对应的链接地址
    第二步:python代码发送指定地址的请求
    第三步:数据解析(筛选 过滤咱们需要的数据)

    解析了每一个相册地址之后

    1. a 创建每一个相册的文件夹
    2. b 请求每一个相册详情页
      (1) 发送请求
      (2) 解析数据 提取图片链接
      (3) 依次请求图片

    第四步:保存数据

    代码部分

    import requests
    import parsel   # 解析数据
    import os
    # Python学习交流 1群 815624229 快满了加2裙
    # Python学习交流 2群 279199867
    
    for page in range(1, 12):
        response = requests.get(f'https://www.jdlingyu.com/tag/%e8%85%bf%e6%8e%a7/page/{page}')
        # <Response [200]>: 请求成功
        # 静态页面的网页源代码
        # 把静态页面的 字符串 变成可选的对象
        selector = parsel.Selector(response.text)
        # 3. 数据解析(筛选 过滤咱们需要的数据)
        # re: 可以直接提取网页字符串数据
        # css / xpath: 通过HTML标签进行提取
        lis = selector.xpath("//ul[@class='b2_gap ']/li")
        for li in lis:
            # text(): 提取标签的文本内容
            title = li.xpath('.//h2/a/text()').get()
            print(f'-------------正在爬取{title}-------------')
            # a 如果当前文件夹不存在 那么就新建一个
            if not os.path.exists('./img/'+title):
                os.mkdir('./img/'+title)
            # 每一个相册所在的 网页地址
            # 获取a标签属性内容 /@src
            href = li.xpath('.//h2/a/@href').get()
            # b 请求每一个相册详情页
            data_html = requests.get(href).text
            # 把字符串对象转变为 可选的selector对象
            selector_2 = parsel.Selector(data_html)
            img_p = selector_2.xpath('//div[@class="entry-content"]/p')
            for img in img_p:
                # (2) 解析数据 提取图片链接
                img_list = img_p.xpath('.//img/@src').getall()
                for img_1 in img_list:
                    # content: 获取二进制数据 图片 视频 音频
                    # 文本: text
                    try:
                        img_data = requests.get(img_1).content
                    # 图片文件名
                    except:
                        continue
                    img_name = img_1.split('/')[-1]
                    with open(f'img\\{title}\\{img_name}', mode='wb') as f:
                        f.write(img_data)
                        print('下载完成:', img_name)

    效果展示


    这个分类总共是12页,我就不全部展示了,大家可以自己去试试!

  • 相关阅读:
    HTML5 向网页嵌入视频和音频
    HTML5中History.back()页面后退刷新页面
    阻止表单的默认提交事件
    SQL Server 2008带字段注释导入Power Designer 9.5
    CodeSmith将模板文件批量生成文件的方法(转)
    Nhibernate学习心得
    邮件发送代码
    Json的一些了解
    有关js的一个问题
    在IIS上启用Gzip压缩(HTTP压缩)
  • 原文地址:https://www.cnblogs.com/hahaa/p/16204122.html
Copyright © 2020-2023  润新知