欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

復制代碼 代碼如下:

#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() 

相關文章

  • 關于tf.reverse_sequence()簡述

    關于tf.reverse_sequence()簡述

    今天小編就為大家分享一篇關于tf.reverse_sequence()簡述,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python3.5 tkinter實現(xiàn)頁面跳轉

    python3.5 tkinter實現(xiàn)頁面跳轉

    這篇文章主要為大家詳細介紹了python3.5 tkinter實現(xiàn)頁面跳轉,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python Django搭建文件下載服務器的實現(xiàn)

    Python Django搭建文件下載服務器的實現(xiàn)

    這篇文章主要介紹了Python Django搭建文件下載服務器的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • python3實現(xiàn)短網(wǎng)址和數(shù)字相互轉換的方法

    python3實現(xiàn)短網(wǎng)址和數(shù)字相互轉換的方法

    這篇文章主要介紹了python3實現(xiàn)短網(wǎng)址和數(shù)字相互轉換的方法,涉及Python操作字符串的相關技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • python爬蟲庫scrapy簡單使用實例詳解

    python爬蟲庫scrapy簡單使用實例詳解

    這篇文章主要介紹了python爬蟲庫scrapy簡單使用實例詳解,需要的朋友可以參考下
    2020-02-02
  • Python PyInstaller庫基本使用方法分析

    Python PyInstaller庫基本使用方法分析

    這篇文章主要介紹了Python PyInstaller庫基本使用方法,結合實例形式分析了Python PyInstaller庫的功能、安裝及相關使用注意事項,需要的朋友可以參考下
    2019-12-12
  • 如何將PySpark導入Python的放實現(xiàn)(2種)

    如何將PySpark導入Python的放實現(xiàn)(2種)

    這篇文章主要介紹了如何將PySpark導入Python的放實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • python 字典和列表嵌套用法詳解

    python 字典和列表嵌套用法詳解

    python中字典和列表的使用,在數(shù)據(jù)處理中應該是最常用的,今天通過多種場景給大家分享python 字典和列表嵌套用法,感興趣的朋友一起看看吧
    2021-06-06
  • python隨機3分鐘發(fā)送一次消息完整代碼

    python隨機3分鐘發(fā)送一次消息完整代碼

    最近我接到這樣的任務需求有一個實時任務,想要間隔3分鐘發(fā)送,最近的一次消息,接下來通過本文給大家分享python隨機3分鐘發(fā)送一次消息,需要的朋友可以參考下
    2024-03-03
  • Python-pip配置國內鏡像源快速下載包的方法詳解

    Python-pip配置國內鏡像源快速下載包的方法詳解

    pip如果不配置國內鏡像源的話,下載包的速度非常慢,畢竟默認的源在國外呢,這篇文章主要介紹了Python-pip配置國內鏡像源快速下載包的方法詳解,需要的朋友可以參考下
    2024-01-01

最新評論