首页 > 编程语言 >爬虫代码 python

爬虫代码 python

时间:2024-09-14 13:45:54浏览次数:8  
标签:python 代码 0.5 爬虫 sleep time print import

 

 

 

import requests
import urllib
import os
import time

print('欢迎使用Aking爬虫图片下载器!')
time.sleep(0.5)
print('欢迎使用Aking爬虫图片下载器!!')
time.sleep(0.5)
print('欢迎使用Aking爬虫图片下载器!!!')
time.sleep(0.5)
print('准备就绪!')
time.sleep(0.5)
keyword = str(input('请输入关键词:'))
folder = 'C:/Users/Administrator/Desktop/456'
sum_old = int(input('请输入需要下载的数量(最低为30,尽量为30倍数):'))
sum = int(sum_old / 30)


if not os.path.exists(str(folder)):
    print('正在创建文件夹!')
    os.mkdir(str(folder))
    print('文件夹已创建!')



def is_chinese(string):
    for ch in string:
        if u'\u4e00' <= ch <= u'\u9fff':
            return True

    return False


class GetImage():
    def __init__(self, keyword=(), paginator=1):
        self.url = "http://image.baidu.com/search/acjson?"
        self.headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36'
        }
        self.keyword = keyword    #定义关键词
        self.paginator = paginator    #定义要爬取的页数

    def get_param(self):
        params = []
        #判断中文,是中文就重编码
        if is_chinese(self.keyword):
            keyword = urllib.parse.quote(self.keyword)
            for i in range(1, self.paginator + 1):
                params.append(
                    'tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=&hd=1&latest=0&copyright=0&word={}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&cg=star&pn={}&rn=30&gsm=78&1557125391211='.format(
                        keyword, keyword, 30 * i))
        else:
            keyword = self.keyword
            for i in range(1, self.paginator + 1):
                params.append(
                    'tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=&hd=1&latest=0&copyright=0&word={}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&cg=star&pn={}&rn=30&gsm=78&1557125391211='.format(
                        keyword, keyword, 30 * i))
        return params

    def get_urls(self, params):
        urls = []
        for param in params:
            urls.append(self.url + param)

        return urls

    def get_image_url(self, urls):
        image_url = []
        for url in urls:
            json_data = requests.get(url, headers=self.headers).json()
            json_data = json_data.get('data')
            for i in json_data:
                if i:
                    image_url.append(i.get('thumbURL'))

        return image_url

    def get_image(self, image_url,prefix=None):
        file_name = os.path.join(str(folder), self.keyword)
        print('开始下载!')
        print('文件会下载到'+str(file_name)+',目录下。')
        if not os.path.exists(file_name):
            os.mkdir(file_name)

        for index, url in enumerate(image_url, start=1):

            img_name=str(index) if prefix is None else str(prefix)+'_'+str(index)
            with open(file_name + '/{}.jpg'.format(img_name), 'wb') as f:
                f.write(requests.get(url, headers=self.headers).content)

            if index != 0 and index % 30 == 0:
                print("第{}张下载完成!".format(index))

    def __call__(self, *args, **kwargs):

        params = self.get_param()
        urls = self.get_urls(params)
        image_url = self.get_image_url(urls)
        self.get_image(image_url)

    def run(self,prefix=None):

        params = self.get_param()
        urls = self.get_urls(params)
        image_url = self.get_image_url(urls)
        self.get_image(image_url,prefix=prefix)


if __name__ == '__main__':
    spider = GetImage(str(keyword), sum)
    spider.run(prefix='senlin_')

 

标签:python,代码,0.5,爬虫,sleep,time,print,import
From: https://www.cnblogs.com/tangjunjun/p/17442666.html

相关文章

  • 微同城小程序源码系统帮你轻松本地生活服务平台 带完整的安装代码包以及搭建部署教程
    系统概述微同城小程序源码系统是一款专为打造本地化生活服务生态而设计的软件框架。它不仅拥有高度模块化的设计,还集成了丰富的功能组件,覆盖餐饮外卖、生鲜配送、家政服务、二手交易、房屋租赁等多个生活领域。通过这套源码系统,用户可以轻松实现平台的快速搭建与个性化定制,满......
  • 基于php+mysql开发制作的全景在线制作网站源码系统 附带完整的安装代码包以及搭建部署
    系统概述本系统是一款集全景图片上传、编辑、展示于一体的综合性解决方案。采用PHP作为后端开发语言,结合MySQL数据库的强大功能,实现了高效稳定的数据处理与存储。前端则运用了HTML5、CSS3及JavaScript等现代Web技术,确保跨浏览器兼容性和良好的用户体验。通过简洁明了的操作界......
  • 原创开发的响应式网站建站系统源码 附带完整的安装代码包以及搭建部署教程
    系统概述原创开发的响应式网站建站系统源码是一款集灵活性、易用性与强大功能于一体的建站解决方案。它采用前沿的Web开发技术,如HTML5、CSS3、JavaScript等,确保网站能够在各种设备上流畅运行,包括桌面电脑、平板电脑以及智能手机,实现真正的响应式设计。该系统经过精心设计与优......
  • 多用户AI雷达名片平台版小程序源码系统 附带完整的安装代码包以及搭建部署教程
    系统概述多用户AI雷达名片平台版小程序源码系统是一款基于微信小程序生态开发的创新产品,它巧妙地将人工智能技术与传统商务名片相结合,打造了一个集名片交换、智能识别、数据分析、社交互动等功能于一体的综合性平台。该系统支持多用户同时在线,每个用户都能拥有自己独特的AI雷......
  • 一元盲盒脱单小程序源码系统 带分销功能 附带完整的源代码包以及搭建部署教程
    系统概述本系统是一款集盲盒交友与分销功能于一体的小程序源码系统,旨在通过趣味性的盲盒玩法,让用户在享受拆盒惊喜的同时,也能遇见心仪的另一半。系统采用先进的后端技术架构,确保数据的稳定与安全,同时提供简洁易用的前端界面,让用户体验流畅自然。此外,系统附带完整的源代码包,方......
  • 自助式响应式建站系统源码 海量网站模版随心选择 带完整的安装代码包以及搭建部署教程
    系统概述自助式响应式建站系统,顾名思义,是一种允许用户无需深入了解编程技术,即可通过简单的拖拽、选择等操作,快速创建并管理网站的在线工具。它结合了响应式设计理念,确保网站能够在不同设备(如电脑、平板、手机)上自动调整布局,提供最佳浏览体验。此类系统通常提供丰富的网站模版......
  • 【代码随想录Day17】二叉树Part05|练习递归
    654.最大二叉树题目链接/文章讲解:代码随想录视频讲解:又是构造二叉树,又有很多坑!|LeetCode:654.最大二叉树_哔哩哔哩_bilibili思路和昨天的从中序与后序遍历序列构造二叉树很像,那一题是根节点对数组分割,这一题是最大元素对数组分割。代码解释:基本检查:如果输入数组nums......
  • uniapp - 最新详细实现web-view网页与安卓苹果App端之间互相通信功能,苹果app/安卓app
    前言在uni-app项目开发中,详解实现web-view和App之间的互相通信完整流程及代码教程,Uniappapp端向webview网站传递数据,同时webview又可以向app端传递数据参数,完成二者的数据通信方案,支持嵌入本地移动端H5页面、第三方网站、自定义网页,附带各种常见问题,解决发送数据通信没......
  • 【408精华知识】程序的机器级代码表示
    程序的机器级代码表示是计算机组成原理的核心内容,其综合第四章指令与第五章CPU,并常常结合第三章存储系统进行考察,可以说是把计算机组成原理最核心的内容都汇集在了一起。本文着重讨论程序的机器级代码表示,并辅以历年真题进行讲解。关于存储、指令、CPU组成请详见:【408精华......
  • python爬虫连载20
    XPath语法:表达式描述nodename选取此节点的所有子节点/从根节点选取//选择任意位置的某个节点.选取当前节点..选取当前节点的父节点@选取属性    <?xmlversion="1.0"encoding="IS0-8859-1"?><classroom>      <student>             <id>1001</id>   ......