分享

用python分析金庸小说

 dinghj 2013-10-12

用python分析金庸小说

TY 发布于 2011-10-24 16:09:29,分类:python语言基础,1评/2668阅
转载自: http://groups.google.com/group/python-cn/browse... 如何用python处理网络上古高尔级别的文本数据,如何查询词汇之间的联系,如何从大量数据中抽取有用的信息,一直是自然语言处理(Natural
Language Processing)工作的一个基础。
最近利用闲散时间,写了个简单的脚本。给个名字,叫做WebUrlCrawl.py。就是获得某个网站所有页面的url。里面有个bug,就是TCP端
口的问题。我用这个脚本分析了一下 天涯在线书库 里的金庸全集。虽然很慢,不过基本上没有大错。

[Python]代码片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/python
import urllib
import re
from sgmllib import SGMLParser
class URLLister(SGMLParser):
    def reset(self):
      self.urls = []
      SGMLParser.reset(self)
    def start_a(self, attrs):
        href = [v for k, v in attrs if k=='href']
        if href:
            self.urls.extend(href)
def doUrls(url):
  print "hehe\tURL:\t"+url
def crawlWeb(web_url):
  web_url_s = web_url.split("/")
  doUrls(web_url)
  lenW=len(web_url_s)
  ToCrawlUrls = []
  ToCrawlUrls_temp=[]
  BeCrawledUrls = []
  ToCrawlUrls.append(web_url)
  while(len(ToCrawlUrls) !=0):
    #print ToCrawlUrls
    #print "\t\tok"
    for i_url in ToCrawlUrls:
      #print "parsing\t" + i_url
      raw_html = urllib.urlopen(i_url).read()
      lister=URLLister()
      lister.feed(raw_html)
      temp_urls = lister.urls
      for j_url in temp_urls:
        if(re.search(r"http:",j_url)!=None and (re.search(r'html
$',j_url)!=None or re.search(r'htm$',j_url)!=None)):
           j_url=j_url
        elif(re.search(r'html$',j_url)!=None or re.search(r'htm
$',j_url)!=None):
          if(re.search(r"^\.",j_url)==None):
            j_url=i_url+j_url
          else:
            continue
        else:
          continue
        j_url_s = j_url.split("/")
        lenJ = len(j_url_s)
        if(BeCrawledUrls.count(j_url)==0):
          if(lenJ >= lenW):
            #print "\t"+j_url+"\n\t"+i_url
            if(re.search(i_url,j_url)!=None):
              ToCrawlUrls_temp.append(j_url)
              doUrls(j_url)
      BeCrawledUrls.append(i_url)
    ToCrawlUrls = ToCrawlUrls_temp
    ToCrawlUrls_temp = []

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多