写了个抓取页面的脚本

写了个抓取页面的脚本

用了3个for 。。。in。。。。嵌套,然后正则匹配结果。
怎么程序老是无响应了呢。。。
初学python。请教大家。。。
帖代码,我瞅瞅
打印日志。


QUOTE:
原帖由 king6o60 于 2008-12-6 08:19 发表
帖代码,我瞅瞅

# -*- coding: utf-8 -*-
import urllib,urllib2,re,threading
url= "http://www.icson.com.cn/Items/Default.aspx"
def GetAllCate(url,name):
    f = open(r"c:\icson.txt",'w')
    s = urllib.urlopen(url)
    txt = s.read()
    pattern = re.compile(r"(/Items/SecondCategory.aspx\DID=\d{2,4})\">\D+")
    arr = pattern.findall(txt)
    #print arr
    for i in range(len(arr)):
        sThird = urllib.urlopen("http://icson.com.cn"+arr)
        txtThird = sThird.read()
        pt = re.compile(r"(/Items/ThirdCategory.aspx\DID=\d{2,4})'>\D+")
        arr2 = pt.findall(txtThird)
        #print arr2
        for j in range(len(arr2)):
            s2 = urllib.urlopen("http://icson.com.cn"+arr2[j])
            txtList = s2.read()
            ptName = re.compile(r"(/Items/ItemDetail.aspx\DItemID=\d{1,6}' target='_blank'>\%s)" %(name,))
            arrName = ptName.findall(txtList)
            #print arrName
            for n in range(len(arrName)):
                f.write(arrName[n]+'\n')
                #print arrName +'\n'
    f.close()

-----------------------------
谢谢了~~~


QUOTE:
原帖由 jjj137 于 2008-12-6 10:32 发表
打印日志。

谢谢。我去查下怎么用日志。。。
# -*- coding: utf-8 -*-
import urllib,urllib2,re,threading
url= "http://www.icson.com.cn/Items/Default.aspx"
def GetAllCate(url,name):
    f = open(r"c:\icson.txt",'w')
    s = urllib.urlopen(url)
    txt = s.read()
    pattern = re.compile(r"(/Items/SecondCategory.aspx\DID=\d{2,4})\">\D+")
    arr = pattern.findall(txt)
    #print arr
    for i in range(len(arr)):
        sThird = urllib.urlopen("http://icson.com.cn"+arr)    ###here,arr是list,不是str,不能用'+',此处报错
        txtThird = sThird.read()
        pt = re.compile(r"(/Items/ThirdCategory.aspx\DID=\d{2,4})'>\D+")
        arr2 = pt.findall(txtThird)
        #print arr2
        for j in range(len(arr2)):
            s2 = urllib.urlopen("http://icson.com.cn"+arr2[j])
            txtList = s2.read()
            ptName = re.compile(r"(/Items/ItemDetail.aspx\DItemID=\d{1,6}' target='_blank'>\%s)" %(name,))
            arrName = ptName.findall(txtList)
            #print arrName
            for n in range(len(arrName)):
                f.write(arrName[n]+'\n')
                #print arrName +'\n'
    f.close()
至于日志的话,你可以选择中间print出来看,或者用log

import logging
def log_init():
                logDir = './log/'
                ret = os.path.exists(logDir)
                if ret == False:
                        os.makedirs(logDir)
                Format = '%(asctime)s %(levelname)s %(lineno)d : %(message)s'
                Datefmt='%Y-%m-%d %H:%M:%S'
                logName='xxxx.log'
                logging.basicConfig(level=logging.DEBUG, format=Format, datefmt=Datefmt, filename=logName, filemode='w'

用得时候可以这样:
log_init()
logging.getLogger().info('hello,iamlinwu')


QUOTE:
原帖由 king6o60 于 2008-12-6 13:52 发表
# -*- coding: utf-8 -*-
import urllib,urllib2,re,threading
url= "http://www.icson.com.cn/Items/Default.aspx"
def GetAllCate(url,name):
    f = open(r"c:\icson.txt",'w')
    s = urllib.urlope ...

sThird = urllib.urlopen("http://icson.com.cn"+arr)    ###here,arr是list,不是str,不能用'+',此处报错
------
这个是我发帖时出错了。
原本是
sThird = urllib.urlopen("http://icson.com.cn"+arr)
sThird = urllib.urlopen("http://icson.com.cn"+arr【i】)

汗。。。怎么发arr【i】。。【i】会没掉。。。
估计是正则的问题,也不知道你要匹配什么内容,你也不贴出来,我猜吧
你把第三个for循环里的正则换成这个试试吧
ptName = re.compile(r"(/Items/ItemDetail.aspx\DItemID=\d{1,6}' target='_blank'>%s)" %name)