Python 网络爬虫

class MyThread(threading.Thread):
    def __init__(self, func):
        threading.Thread.__init__(self);
        self.func = func;
    
    def run(self):
        apply(self.func);
        
class Spider_Model(object):
    def __init__(self):
        self.page = 1;
        self.pages = [];
        self.enable = False;
    
    def GetPage(self, page):
        myUrl ="http://www.qiushibaike.com/hot/page/"+str(page);
        user_agent = 'Mozilla 4.0 (compatible; MSIE 5.5; Windows NT)';
        headers = {'User-Agent':user_agent};
        req = urllib2.Request(myUrl, headers = headers);
        myResponse = urllib2.urlopen(req);
        myPage = myResponse.read();
        
        unicodePage = myPage.decode('utf-8');
        
        myItems = re.findall('<div.*?class="content".*?title="(.*?)">(.*?)</div>', unicodePage, re.S);
        items = [];
        
        for item in myItems:
            #print 'item[0] = ', item[0], 'item[1] = ', item[1];
            items.append([item[0].replace("\n", ""), item[1].replace("\n", "")]);
        return items;
    
    def LoadPage(self):
        while self.enable:
            if len(self.pages) < 2:
                try:
                    myPage = self.GetPage(self.page);
                    self.page += 1;
                    self.pages.append(myPage);
                except Exception, e:
                    print 'can not link the target', e;
            else:
                time.sleep(1);
    
    def ShowPage(self, nowPage, page):
        for items in nowPage:
            print u'di %d ye' % page, items[0], items[1];
            myInput = raw_input('please input');
            if myInput == 'quit':
                self.enable = False;
                break;
    
    def Start(self):
        self.enable = True;
        page = self.page;
        
        print u'jia zai..';
        
        t = MyThread(self.LoadPage);
        t.start();
        
        while self.enable:
            if len(self.pages) > 0:
                nowPage = self.pages[0];
                del self.pages[0];
                self.ShowPage(nowPage, page);
                #page += 1;


print u'please enter to scan the content';
myModel = Spider_Model();
myModel.Start();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值