刚刚开了一个《计算机网络》的课,
觉得很有用。正好师兄让我练习编写一个能下载网站网
页的程序,
正好能用上课上的知识了。
为了想作一个效率不差的,
而下载网页的性能瓶颈是
在网络上,所有决定用
Python
编写代码。刚学
python
没几天,学习一种语言的最好方法就
是写
code.
下面的是我用的多线程实现的网络爬虫,并用
py2exe
生成了一个
exe
,自身觉得
py2exe
不太好,又不会更好的,只能
......
这是我这些天的成果。希望有人能提出好的建议,
先谢谢了!一共两个文件,一
个是
toolbox_insight.py
,是一个工具文件另一个是
test.py
,是一个用到
toolbox_insight.py
中
工具的测试文件
#FileName: toolbox_insight.py
from sgmllib import SGMLParser
import threading
import time
import urllib2
import StringIO
import gzip
import string
import os
#rewrite SGMLParser for start_a
class
Basegeturls(SGMLParser):
#
这个
Basegeturls
类作用是分析下载的网页,把网页中的
所有链接放在
self.url
中。
def reset(self):
self.url = []
SGMLParser.reset(self)
def start_a(self, attrs):
href = [v for k, v in attrs if k == 'href']
if href:
self.url.extend(href)
#for quickly finding
class
Newlist(list):#
这个类其实是一个添加了
find
方法的
LIST
。当
num
变量在
LIST
中,返
回
True,
当不在
LIST
中,返回
False
并把
num
按二分法插入
LIST
中
def find(self, num):
l = len(self)
first = 0
end = l - 1
mid = 0
if l == 0:
self.insert(0,num)
return False
while first < end:
mid = (first + end)/2
if num > self[mid]:
first = mid + 1
elif num < self[mid]:
end = mid - 1