python实现的一只从百度开始不断搜索的小爬虫


Posted in Python onAugust 13, 2013

文中用到了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() 
Python 相关文章推荐
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
Python中的if、else、elif语句用法简明讲解
Mar 11 Python
Python编程求解二叉树中和为某一值的路径代码示例
Jan 04 Python
微信跳一跳小游戏python脚本
Jan 05 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
python特性语法之遍历、公共方法、引用
Aug 08 Python
Django之Mode的外键自关联和引用未定义的Model方法
Dec 15 Python
Python插件机制实现详解
May 04 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 01 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 Python
python用于url解码和中文解析的小脚本(python url decoder)
Aug 11 #Python
python 合并文件的具体实例
Aug 08 #Python
python备份文件以及mysql数据库的脚本代码
Jun 10 #Python
Python 变量类型及命名规则介绍
Jun 08 #Python
Python 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 #Python
python strip()函数 介绍
May 24 #Python
Python的词法分析与语法分析
May 18 #Python
You might like
各种战术和打法的原创者
2020/03/04 星际争霸
生成卡号php代码
2008/04/09 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
jQuery对val和atrr(&quot;value&quot;)赋值的区别介绍
2014/09/26 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
遍历js中对象的属性和值的实例
2016/11/21 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
使用Vue Composition API写出清晰、可扩展的表单实现
2020/06/10 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
python opencv人脸检测提取及保存方法
2018/08/03 Python
Python简单I/O操作示例
2019/03/18 Python
优秀员工获奖感言
2014/03/01 职场文书
面试自我介绍演讲稿
2014/04/29 职场文书
建筑工地宣传标语
2014/06/18 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
三峡导游词
2015/01/31 职场文书
司机个人年终总结
2015/03/03 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
初中生物教学随笔
2015/08/15 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers