多线程下载sis001的网友自拍贴图版面的图片

多线程下载sis001的网友自拍贴图版面的图片,这个程序并不能下载全部版面而是只下载第二页的内容。因为第二页是最新的内容哦。你需要一个sis001,5级以上的用户名和密码否则无法访问此版面。

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


import urllib
import urllib2
import re
import cookielib
import Queue
import threading


def downPic(tiezi_url):
    req = urllib2.Request(q.get(),None,headers)
    tiezi_html = opener.open(req).read()
    #print tiezi_html
    re_img = re.compile(r'\<img src\=\"(http\:\/\/.*?\.jpg|attachments\/.*?.jpg)\"')
    img_list = re_img.findall(tiezi_html)
    #print img_list
    for i in img_list:
        if re.match("http",i):
            print "%s downloading..."%i
            filename = re.split(r'/',i)
            try:
                req = urllib2.Request(i,None,headers)
                res = opener.open(req).read()
                open(filename[-1],'wb').write(res)
            except:
                pass
        else:
            img_url = "http://38.103.161.185/forum/%s"%i
            filename = re.split(r'/',img_url)
            print "inner link %s"%img_url
            try:
                req = urllib2.Request(img_url,None,headers)
                res = opener.open(req).read()
                open(filename[-1],'wb').write(res)
            e
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当涉及到在 Python 中使用多线程下载图片时,您可以使用 `threading` 模块和 `requests` 库来实现。下面是一个简单的示例代码: ```python import threading import requests def download_image(url, filename): response = requests.get(url) with open(filename, "wb") as file: file.write(response.content) print(f"下载完成: {filename}") # 图片链接列表 image_urls = [ "https://example.com/image1.jpg", "https://example.com/image2.jpg", "https://example.com/image3.jpg" ] # 创建线程列表 threads = [] for index, url in enumerate(image_urls): # 设置文件名 filename = f"image{index + 1}.jpg" # 创建并启动线程 thread = threading.Thread(target=download_image, args=(url, filename)) thread.start() threads.append(thread) # 等待所有线程完成 for thread in threads: thread.join() print("所有图片下载完成") ``` 在上述示例代码中,我们定义了一个 `download_image` 函数,它接受图片的 URL 和要保存的文件名作为参数,并使用 `requests` 库下载图片并保存到本地文件中。然后,我们创建了一个包含图片链接的列表 `image_urls`。 接下来,我们使用 `threading.Thread` 创建了多个线程,并将 `download_image` 函数作为目标函数传递给每个线程。我们还为每个线程设置了不同的文件名。然后,我们依次启动每个线程,并将它们添加到线程列表 `threads` 中。 最后,我们使用 `thread.join()` 等待所有线程完成下载任务,并在所有线程完成后输出提示信息。 这样,您就可以使用多线程来同时下载多个图片。请注意,该示例只是一个简单的示例,实际应用中可能需要处理更多的异常情况和优化控制并发数量等问题。 希望这对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值