最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實現(xiàn)的一只從百度開始不斷搜索的小爬蟲

 更新時間:2013年08月13日 12:39:05   作者:  
這是我第三天學(xué)python了, 想寫一個東西紀(jì)念一下吧,于是寫了一直爬蟲,但是不是好的蟲,只能講網(wǎng)頁的關(guān)鍵詞存到本地, 但是我覺得基本上算是一只小蟲了

文中用到了BeautifulSoup這個庫, 目的是處理html文檔分析的, 因為我只是提取了title的關(guān)鍵字,所以可以用正則表達式代替, 還有一個庫是jieba, 這個庫是中文分詞的作用, 再有一個庫是 chardet, 用來判斷字符的編碼, 本想多線程的, 但是自認為被搞糊涂了,就放棄了

復(fù)制代碼 代碼如下:

#coding:utf-8
import re
import urllib
import urllib2
import sys
import time
import Queue
import thread
import threading
import jieba
import chardet
from BeautifulSoup import BeautifulSoup as BS


DEEP = 1000
LOCK = threading.Lock()
PATH = "c:\\test\\"
urlQueue = Queue.Queue()
def pachong():
 url = 'http://www.baidu.com'
 return url

def getPageUrl(html):
 reUrl = re.compile(r'<\s*[Aa]{1}\s+[^>]*?[Hh][Rr][Ee][Ff]\s*=\s*[\"\']?([^>\"\']+)[\"\']?.*?>')
 urls = reUrl.findall(html)
 for url in urls:
  if len(url) > 10:
   if url.find('javascript') == -1:
    urlQueue.put(url)

def getContents(url):
 try:
  url = urllib2.quote(url.split('#')[0].encode('utf-8'), safe = "%/:=&?~#+!$,;'@()*[]")
  req = urllib2.urlopen(url)
  res = req.read()
  code = chardet.detect(res)['encoding']
  #print
  #print code
  res = res.decode(str(code), 'ignore')
  res = res.encode('gb2312', 'ignore')
  code = chardet.detect(res)['encoding']
  #print code
  #print res
  return res
 except urllib2.HTTPError, e:
  print e.code
  return None
 except urllib2.URLError, e:
  print str(e)
  return None

def writeToFile(html, url):
 fp = file(PATH + str(time.time()) + '.html', 'w')
 fp.write(html)
 fp.close()

 
def getKeyWords(html):
 code = chardet.detect(html)['encoding']
 if code == 'ISO-8859-2':
  html.decode('gbk', 'ignore').encode('gb2312', 'ignore')
 code = chardet.detect(html)['encoding']
 soup = BS(html, fromEncoding="gb2312")
 titleTag = soup.title
 titleKeyWords = titleTag.contents[0]
 cutWords(titleKeyWords)

def cutWords(contents):
 print contents
 res = jieba.cut_for_search(contents)
 res = '\n'.join(res)
 print res
 res = res.encode('gb2312')
 keyWords = file(PATH + 'cutKeyWors.txt', 'a')
 keyWords.write(res)
 keyWords.close()

def start():

 while urlQueue.empty() == False:
  url = urlQueue.get()
  html = getContents(url)
  getPageUrl(html)
  getKeyWords(html)
  #writeToFile(html, url)

  
if __name__ == '__main__':
 startUrl = pachong()
 urlQueue.put(startUrl)
 start() 

相關(guān)文章

最新評論

临高县| 婺源县| 都安| 顺义区| 洪江市| 太谷县| 祁门县| 上饶市| 天全县| 元谋县| 九龙县| 河曲县| 江城| 新津县| 彩票| 江津市| 如皋市| 南涧| 宁乡县| 平陆县| 拉萨市| 聂拉木县| 镇安县| 灵川县| 凌海市| 鄂托克前旗| 太湖县| 辰溪县| 潮州市| 达州市| 彝良县| 安平县| 大悟县| 固始县| 望江县| 磐安县| 郎溪县| 彭泽县| 游戏| 罗平县| 赤城县|