【爬虫】使用magical抓取某个网站的图片

news/2024/7/19 10:19:34 标签: 爬虫, python, 开发语言

一般情况是不需要magical的,但是现在不是一般情况!!!

import random
import requests
import socket
import time
import os

if not os.path.exists('./data'):
    os.mkdir('data')

for i in range(14,17):
    url = 'https://baidu/72/{:0>3.0f}.jpg'.format(i)
    proxies = [
        {'http':'socks5://127.0.0.1:1080'},
        {'https':'socks5://127.0.0.1:1080'}
    ]
    proxies = random.choice(proxies)
    # print(proxies)
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
    try:
        response = requests.get(url,proxies=proxies, headers=headers) #使用代理
        path = './data/{:0>3.0f}.jpg'.format(i)  # 文件储存地址
        with open(path, 'wb') as f:  # 把图片数据写入本地,wb表示二进制储存
            for chunk in response.iter_content(chunk_size=128):
                f.write(chunk)
        response.close()  # 记得要关闭
        if response.status_code == 200:
            print(f'正在下载: {url}')
    except requests.ConnectionError as e:
        print(e.args)

    timeout = 20
    socket.setdefaulttimeout(timeout)  # 这里对整个socket层设置超时时间。后续文件中如果再使用到socket,不必再设置
    sleep_download_time = 10
    time.sleep(sleep_download_time)  # 这里时间自己设定

优化版:

python">#  开发时间:    2022/10/22 22:40
#  功能作用:    未知
import random
import requests
import socket
import time
import os

dataname = 51    ## 这里改第几个画集
star = 1         ## 从第几页开始下载

if not os.path.exists(f'./{dataname}'):
    os.mkdir(f'{dataname}')

def delay():
    timeout = 20
    socket.setdefaulttimeout(timeout)  # 这里对整个socket层设置超时时间。后续文件中如果再使用到socket,不必再设置
    sleep_download_time = 5
    time.sleep(sleep_download_time)  # 这里时间自己设定

for i in range(star,999):
    url = 'https://baidu/data/1602/{}/{:0>3.0f}.jpg'.format(dataname,i)    ## 改自己的网址
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 QQBrowser/10.7.4313.400'}
    down = True
    num = 0
    while(down):
        try:
            proxies = [
                {'http': 'socks5://127.0.0.1:1080'},
                {'https': 'socks5://127.0.0.1:1080'}
            ]
            proxies = random.choice(proxies)
            # print(proxies)
            response = requests.get(url,proxies=proxies, headers=headers) #使用代理
            path = './{}/{:0>3.0f}.jpg'.format(dataname,i)  # 文件储存地址
            with open(path, 'wb') as f:  # 把图片数据写入本地,wb表示二进制储存
                for chunk in response.iter_content(chunk_size=128):
                    f.write(chunk)
            response.close()  # 记得要关闭
            if response.status_code == 200:
                print(f'正在下载: {url}')
            down = False
        except requests.ConnectionError as e:
            print(e.args)
            num += 1
            print(f'Error========>>:下载失败,接着重试第{num}/20次: <<=================== {url}')
            delay()
            down = (False if(num >= 20) else True)
    delay()


http://www.niftyadmin.cn/n/975046.html

相关文章

重温JS基础知识

JavaScript 是脚本语言 JavaScript 是一种轻量级的编程语言。 JavaScript 是可插入 HTML 页面的编程代码。 JavaScript 插入 HTML 页面后&#xff0c;可由所有的现代浏览器执行 JavaScript&#xff1a;改变 HTML 内容 xdocument.getElementById("demo") //查找元素 …

面试题34:二叉树中和为某一个值的路径

面试题34&#xff1a;二叉树中和为某一个值的路径 给二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 class Solution { public:vector<vector<int>>…

Python爬虫之微打赏爬虫

昨天有学员问我爬虫的问题&#xff0c;说xpath语法写出来没数据。其实可能是其他地方错了&#xff0c;而不是xpath语法的问题&#xff0c;我们需要学会找错误的原因。 打印下请求的内容&#xff0c;看有没有你要的数据。没有的话&#xff0c;是不是请求错误。请求成功是不是异步…

【transform】SETF + VIT 的一些个人笔记

首先声明&#xff1a;代码是参考以下作者大佬的&#xff0c;如有侵权马上删。 本人只是在原有基础上加了点自己的笔记&#xff0c;改了点结构 https://github.com/920232796/SETR-pytorch https://github.com/lucidrains/vit-pytorch transform的本质其实就是把图像切块然后靠…

正则取小数点后面几位

【转自】正则表达式取小数点后面几位 <script type"text/javascript"> onload function(){ var a "23.456322"; var aNew; var re /([0-9]\.[0-9]{2})[0-9]*/; aNew a.replace(re,"$1"); alert(aNew); } </scr…

SpringCloud微服务实战-Zuul-APIGateway(十)

本文转自&#xff1a;http://blog.csdn.net/qq_22841811/article/details/67637786#准备工作 1 API Gateway 2 Zuul介绍 2.1 zuul的功能 Routing in an integral part of a microservice architecture. For example, / may be mapped to your web application, /api/users is m…

自定义中间件

Diango组件中间件:(每次有请求都会走一遍中间件) 中间件顾名思义&#xff0c;是介于request与response处理之间的一道处理过程 如果你想修改请求&#xff0c;例如被传送到view中的HttpRequest对象。 或者你想修改view返回的HttpResponse对象&#xff0c;这些都可以通过中间件来…

面试题35:复杂链表的复制

面试题35&#xff1a;复杂链表的复制 实现 copyRandomList 函数&#xff0c;复制一个复杂链表。在复杂链表中&#xff0c;每个节点除了有一个 next 指针指向下一个节点&#xff0c;还有一个 random 指针指向链表中的任意节点或者 null。 class Solution { public:Node* copyR…