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

#!/usr/bin/python
# -*- coding: cp936 -*-
#coding utf-8import urllib
import urllib2
import re
import cookielib
import Queue
import threadingdef downPic(tiezi_url):req = urllib2.Request(q.get(),None,headers)tiezi_html = opener.open(req).read()#print tiezi_htmlre_img = re.compile(r'\<img src\=\"(http\:\/\/.*?\.jpg|attachments\/.*?.jpg)\"')img_list = re_img.findall(tiezi_html)#print img_listfor i in img_list:if re.match("http",i):print "%s downloading..."%ifilename = re.split(r'/',i)try:req = urllib2.Request(i,None,headers)res = opener.open(req).read()open(filename[-1],'wb').write(res)except:passelse:img_url = "http://38.103.161.185/forum/%s"%ifilename = re.split(r'/',img_url)print "inner link %s"%img_urltry:req = urllib2.Request(img_url,None,headers)res = opener.open(req).read()open(filename[-1],'wb').write(res)except:passcj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#urllib2.install_opener(opener)
headers ={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}
data =  {
"formhash":"3fec4925",
"referer":"index.php",
"loginfield":"username",
"240aa46b3893fb57c436c0a3785b61e7":"xxxx",
"ea32b1cadbde4b66ca614e0bb593d1c9":"xxxx",
"questionid":"0",
"answer":"",
"cookietime":"2592000",
"loginmode":"",
"styleid":"",
"loginsubmit":"true"}
post_data = urllib.urlencode(data)
req = urllib2.Request("http://38.103.161.185/forum/logging.php?action=login&",post_data,headers)
content=opener.open(req)
#print content.read()
req2 = urllib2.Request("http://38.103.161.185/forum/forum-62-2.html",None,headers)
board_html = opener.open(req2).read()
#print board_html
re_link = re.compile(r'\<a href\=\"(thread-\d{7}-1-2.html)')
title_list = re_link.findall(board_html)
#http://38.103.161.185/forum/thread-(4917300-1-1.html)
#http://38.103.161.185/forum/forum-62-(2).html
#[\u4e00-\u9fa5]
#print title_list
q = Queue.Queue(100)
for i in title_list:tiezi_url = "http://38.103.161.185/forum/%s"%i#print tiezi_urlq.put(tiezi_url)
print "total title:%s"%q.qsize()
while True:if q.qsize()>0:th = threading.Thread(target=downPic,args=(tiezi_url,) )th.start()else:break

=====

高效

#!/usr/bin/python
# -*- coding: cp936 -*-
#coding utf-8import urllib
import urllib2
import re
import cookielib
import Queue
import threading
import socket
import time
import sys
import randomdef log(message):log = open("log.txt","a")log.write(time.ctime()+" "+message+"\n")log.close()def getPic():i = q.get()if re.match("http",i):     #print "%s downloading..."%ifilename = re.split(r'/',i)try:req = urllib2.Request(i,None,headers)res = opener.open(req).read()savefile = '.\\img\\'+filename[-1]+ str(int(random.random()*100000000))+'.jpg'open(savefile,'wb').write(res)except:etype, value, tb = sys.exc_info()errormsg = i + "||"+str(etype) +"||"+ str(value)log(errormsg)passelse:img_url = "http://38.103.161.185/forum/%s"%ifilename = re.split(r'/',img_url)#print "%s"%img_urltry:req = urllib2.Request(img_url,None,headers)res = opener.open(req).read()savefile = '.\\img\\'+filename[-1]+ str(int(random.random()*100000000))+'.jpg'open(savefile,'wb').write(res)except:etype, value, tb = sys.exc_info()errormsg = i + "||"+str(etype) +"||"+ str(value)log(errormsg)passdef downPic(tiezi_url,q):req = urllib2.Request(tiezi_url,None,headers)tiezi_html = opener.open(req).read()#print tiezi_htmlre_img = re.compile(r'\<img src\=\"(http\:\/\/.*?\.jpg|attachments\/.*?.jpg)\"')img_list = re_img.findall(tiezi_html)img_list = list(set(img_list))#print img_listfor i in img_list:q.put(i)while True:if q.qsize()>0:th = threading.Thread(target=getPic)th.start()#print "Queue %s"%q.qsize()else:breakheaders ={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}
socket.setdefaulttimeout(30)
cj = cookielib.CookieJar()
#proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8087'})
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
#urllib2.install_opener(opener)
data =  {"formhash":"3fec4925","referer":"index.php","loginfield":"username","240aa46b3893fb57c436c0a3785b61e7":"xxx","ea32b1cadbde4b66ca614e0bb593d1c9":"xxx","questionid":"0","answer":"","cookietime":"2592000","loginmode":"","styleid":"","loginsubmit":"true"}
post_data = urllib.urlencode(data)
req = urllib2.Request("http://38.103.161.185/forum/logging.php?action=login&",post_data,headers)
content=opener.open(req)
#print content.read()
req2 = urllib2.Request("http://38.103.161.185/forum/forum-62-1.html",None,headers)
board_html = opener.open(req2).read()
#print board_html
re_link = re.compile(r'\<a href\=\"(thread-\d{7}-1-\d{1}.html)')
title_list = re_link.findall(board_html)
title_list = list(set(title_list)) #去除list中的重复项
#http://38.103.161.185/forum/thread-(4917300)-1-(1).html
#http://38.103.161.185/forum/forum-62-(2).html
#[\u4e00-\u9fa5]
#print title_listfor i in title_list:tiezi_url = "http://38.103.161.185/forum/%s"%iprint tiezi_urlq = Queue.Queue(0)downPic(tiezi_url,q)print 'All threads terminate!'

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

  1. 爬虫:程序_进程_线程_多线程(案例多线程下载壁纸)

    目录 前言 一.什么是程序_进程_线程? 二.实现多线程的方法 继承方式实现多线程 为什么要是用类的方式创建线程: 线程的一些常用方法: 三.多线程访问全局变量的安全性问题: 什么是线程安全: 四.解 ...

  2. Python 多线程下载图片

    多线程下载图片 参考链接: Python标准库-urllib和urllib3 urllib实战2–urllib基础urlretrieve().urlcleanup().info().getcode() ...

  3. 图片爬虫,手把手教你Python多线程下载获取图片

    图片站lemanoosh数据为异步加载的形式,往下拉会展示更多数据,也就是下一页数据,通过谷歌浏览器可以很清晰的看到数据接口地址,以及数据展现形式,与其他网站返回json数据的不同之处是,该网站返回的 ...

  4. libcurl使用多线程下载大文件源码示例!

    使用libcurl多线程下载大文件的基本思想: 首选打开文件,将文件等分为指定的片段,使用http range下载,一个线程下载一个片段,当线程下载片段时,它们将数据写到打开文件的指定位置,类似BT文 ...

  5. [Mac] mac linux 多线程下载利器 axel

    ​> 之前做过一些文件下载的统计,发现谷歌浏览器chrome和火狐firefox, 一般都是单线程的下载文件,360浏览器却是多线程的下载. 如今切换到了mac上,发现没有360哪个浏览器,就像 ...

  6. 基于流式的md5计算-多线程下载工具Lwget介绍

    在数据传输的时候,我们希望实现以下目标: 1. 使用多线程传输,加速下载速度 2. 数据在传输过程中,进行流式md5计算,避免在传输完毕之后校验大文件 3. 支持断点续传 4. 支持http协议和ft ...

  7. 断点续传---多线程下载进阶(一)

    打算总结7篇笔记.来学习下断点续传---多线程下载进阶 AndroidManifest.xml <?xml version="1.0" encoding="utf- ...

  8. Android -- 多线程下载

    因为Android应用程序是java写的,基本上很多java写的程序都可以直接照搬到Android上面,移植性非常Good.这里讲一下多线程下载,就是每个线程都下载自己的那部分,那么就需要平均分配分割 ...

  9. Android 多线程下载 显示进度 速度

    功能要求:从网络下载一APK应用,显示下载速度.进度,并安装应用. 运行效果图: 工程结构图: 很简单,就一个activity,一个更新UI的线程,一个下载线程加个文件处理类 主要代码: /***多线 ...

  10. 多线程下载问题(IDHTTP)

    小弟写了一个多线程下载的程序,总是有死循环的迹象,不过我认为可能是产生了死锁.可是当单步跟踪的时候产生错误大家帮小弟看看啊:             unit   IndyMThread;       ...

最新文章

  1. UI4_UIStepper与UIProgressView
  2. PAT甲级题目翻译+答案 AcWing(树)
  3. Linux复制文件到usb设备中,使用shell脚本实现USB设备的加载与文件复制
  4. dataframe修改列名_python dataframe操作大全数据预处理过程(dataframe、md5)
  5. HttpServletResponse说明
  6. POS tagging中英文对应
  7. 系统类配置(一)【安装windows10与ubuntu16.04双系统-附镜像资源】
  8. java中窗口怎么添加动态图_java 点击按钮在窗口中加载图片
  9. 喜欢的歌——星月神话(金莎)
  10. 【自我解析】2020华为杯数学建模比赛A题
  11. 计算机电路电子技术试题答案,数字电子技术基础测试题及其答案.doc
  12. 计算机网络发展史及分类,计算机网络发展史简介
  13. php 集成 spss,spss怎么录入数据
  14. html---表单实例代码
  15. PCL笔记五:PCL可视化
  16. 力扣刷题 DAY_75 贪心
  17. Not have a lick 没有一丁点儿
  18. 英文打字自动空格如何解决?
  19. 当知识图谱遇上推荐系统之DKN模型(论文笔记一)
  20. 硬盘快满了,怎么办?查找重复文件

热门文章

  1. CAD注册机注册码不能正常使用,解决方案
  2. 一行Python代码让图形秒变「手绘风」
  3. 2011年IT行业薪资调查报告
  4. BZOJ 3162 / Luogu P4895: 独钓寒江雪 树hash+DP
  5. linux下安装卸载永中office步骤,永中office2012 for Linux的安装
  6. APP中如何判断手机类型
  7. Tilera--100核cpu
  8. 重试利器之Guava Retrying
  9. HDU 2201 熊猫阿波的故事
  10. C# 解析Json文件(使用NewtonJson库)