`
xitongyunwei
  • 浏览: 930047 次
文章分类
社区版块
存档分类
最新评论

在python中使用多线程下载网页

 
阅读更多
import urllib2
import socket
import threading
import fcntl
#import portalocker

def test_urls(f1,f2,f3,f4,threadnum):
while 1:
fcntl.flock(f1, fcntl.LOCK_EX)
urlstr=f1.readline()
fcntl.flock(f1,fcntl.LOCK_UN)
if urlstr:
datastream=None
try:
request = urllib2.Request(urlstr)
opener = urllib2.build_opener()
datastream = opener.open(request)
if datastream:
if datastream.headers.has_key('Expires'):
fcntl.flock(f2, fcntl.LOCK_EX)
f2.write(urlstr)
fcntl.flock(f2,fcntl.LOCK_UN)
else:
str_cache_control = datastream.headers.get('cache-control')
if str_cache_control and str_cache_control.find('max-age')!= '-1':
fcntl.flock(f2, fcntl.LOCK_EX)
f2.write(urlstr)
fcntl.flock(f2,fcntl.LOCK_UN)
else:
fcntl.flock(f3, fcntl.LOCK_EX)
f3.write(urlstr)
fcntl.flock(f3,fcntl.LOCK_UN)
except IOError, e:
fcntl.flock(f4, fcntl.LOCK_EX)
f4.write(urlstr)
fcntl.flock(f4,fcntl.LOCK_UN)
print threadnum
else:
break

#set socket timeout
timeout=10
socket.setdefaulttimeout(timeout)
f1=open("urls.txt","r")
f2=open('haveExprires.txt','w')
f3=open('noExprires.txt','w')
f4=open('cantBeOpen_urls.txt', 'w')

threads = []
num = 10
for x in xrange(0,num):
threads.append(threading.Thread(target=test_urls, args=(f1,f2,f3,f4,x,)))
for t in threads:
t.start()
for t in threads:
t.join()

f1.close()
f2.close()
f3.close()
f4.close()
分享到:
评论

相关推荐

    用python写的多线程网页爬虫

    用python写了一个下载http://desk.zol.com.cn上面壁纸的爬虫,其中使用了HTMLParser模块方法分析页面,解析出每一页的入口地址,再根据入口地址分析内页的图片地址,解析内页地址使用了多线程,下载图片也是用的多...

    python 多线程实现多个网址的多次快速访问

    能根据url的个数快速开启对个线程,单个线程可以实现对同一个url的多次访问,返回访问成功或者失败的结果

    网页密码暴力破解模板,多线程-python

    网页密码暴力破解模板,用python2编写,多线程,可自己调节线程,只是一个模板,需要自己修改里面的关键字,内容等。

    Python多线程爬虫

    Python多线程爬虫 功能描述 使用python编写一个网站爬虫程序,支持参数如下: spider.py -u url -d deep -f logfile -l loglevel(1-5) --testself -thread number --dbfile filepath --key=”HTML5” 参数说明: -...

    10个线程的Python多线程爬虫(采集新浪数据).rar

    一个Python多线程爬虫,在工作时,开10个线程来抓取新浪网页的数据,抓取并保存页面, 并且根据deep返回页面链接,根据key确定是否保存该页面,其中:  deep == 0时,是抓取的最后一层深度,即只抓取并保存页面,不...

    多线程爬取1000个网页_python爬虫_thread_

    在windows端利用python多线程爬取多个网页示例

    完整版 Python高级开发课程 高级教程 08 Python多线程 多进程开发.pptx

    【Python高级开发课程 高级教程】课程列表 01 Python语言开发要点详解.pptx 02 Python数据结构.pptx ...08 Python多线程 多进程开发.pptx 09 Python爬虫框架Scrapy实战.pptx 10 Python Web开发框架Django实战.pptx

    python使用多线程不断刷新网页的方法

    主要介绍了python使用多线程不断刷新网页的方法,涉及Python多线程thread及time模块操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    Python中用多线程爬取网页图像的好处.zip

    Python中用多线程爬取网页图像的好处

    Python中用多线程爬取网页图像的好处.pdf

    Python中用多线程爬取网页图像的好处.pdf

    Python之多线程爬虫抓取网页图片的示例代码

    那么请使用python语言,构建一个抓取和下载网页图片的爬虫。 当然为了提高效率,我们同时采用多线程并行方式。 思路分析 Python有很多的第三方库,可以帮助我们实现各种各样的功能。问题在于,我们弄清楚我们需要...

    多线程下载图片.zip

    如果要下载网页中的图片,图片比较多的情况下,单线程下载效率会很低,使用多线程就可以很好的解决这个问题,有更多需要的情况下,可以修改成自动提取网页中的图片并下载,并实现自动翻页下载到本地。

    Python编写的开源、多线程的网站爬虫

    Python多线程爬虫是指使用Python编程语言中的多线程技术来实现网页爬取任务的并发执行。通常在进行网页爬取时,单线程的爬虫需要逐个请求并解析每个网页,由于网络延迟和IO等待导致相应时间较长。而多线程爬虫可以...

    Python实现多线程抓取网页功能实例详解

    主要介绍了Python实现多线程抓取网页功能,结合具体实例形式详细分析了Python多线程编程的相关操作技巧与注意事项,并附带demo实例给出了多线程抓取网页的实现方法,需要的朋友可以参考下

    Python自动化多线程测试-单线程/多线程

    单线程/多线程实现Python自动登录网页界面,自动输入账号密码,并自动获取邮箱验证码并输入验证登录。代理ip和邮箱账号换成自己的

    python实现多线程网页下载器

    本文为大家分享了python实现的一个多线程网页下载器,供大家参考,具体内容如下 这是一个有着真实需求的实现,我的用途是拿它来通过 HTTP 方式向服务器提交游戏数据。把它放上来也是想大家帮忙挑刺,找找 bug,让它...

    python支持多线程的爬虫实例

    python是支持多线程的, 主要是通过thread和threading这两个模块来实现的,本文主要给大家分享python实现多线程网页爬虫 一般来说,使用线程有两种模式, 一种是创建线程要执行的函数, 把这个函数传递进Thread对象里,...

    python多线程接口案例

    项目为某内控公司要求...④将上述三步添加到多线程任务中,集中执行,记录数据; ⑤将多线程执行记录生成表格; import xlwt import json import random import threading import time import requests # ip与passwd

Global site tag (gtag.js) - Google Analytics