国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現的一只從百度開始不斷搜索的小爬蟲

2020-02-23 04:55:12
字體:
來源:轉載
供稿:網友

文中用到了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() 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄浦区| 通海县| 舒兰市| 竹山县| 育儿| 汾西县| 永顺县| 农安县| 白沙| 新宁县| 裕民县| 灌南县| 阿拉善右旗| 景东| 泾源县| 临颍县| 大庆市| 达拉特旗| 永寿县| 平南县| 夏河县| 霸州市| 新建县| 井研县| 陈巴尔虎旗| 宁晋县| 疏附县| 洪泽县| 余江县| 涿州市| 北碚区| 沛县| 尉犁县| 清涧县| 平昌县| 富锦市| 西峡县| 文登市| 荣成市| 马尔康县| 巍山|