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安装与使用redis的方法
Apr 19 Python
python中根据字符串调用函数的实现方法
Jun 12 Python
Python字符编码判断方法分析
Jul 01 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
浅析python中numpy包中的argsort函数的使用
Aug 30 Python
Python静态类型检查新工具之pyright 使用指南
Apr 26 Python
pygame实现俄罗斯方块游戏(AI篇1)
Oct 29 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
tensorflow实现在函数中用tf.Print输出中间值
Jan 21 Python
基于python修改srt字幕的时间轴
Feb 03 Python
Python之变量类型和if判断方式
May 05 Python
pytorch SENet实现案例
Jun 24 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
网站加速 PHP 缓冲的免费实现方法
2006/10/09 PHP
ThinkPHP分页实例
2014/10/15 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
laravel 错误处理,接口错误返回json代码
2019/10/25 PHP
js 判断 enter 事件
2009/02/12 Javascript
js修改地址栏URL参数解决url参数问题
2012/12/15 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
贴近用户体验的Jquery日期、时间选择插件
2015/08/19 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
小白入门篇使用Python搭建点击率预估模型
2018/10/12 Python
python pygame实现2048游戏
2018/11/20 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
HTML5是否真的可以取代Flash
2010/02/10 HTML / CSS
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
英国手机零售商:Carphone Warehouse
2018/06/06 全球购物
英国最大的运动营养公司之一:LA Muscle
2018/07/02 全球购物
电子技术专业中专生的自我评价
2013/12/17 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
申论倡议书范文
2014/05/13 职场文书
还款承诺书范文
2014/05/20 职场文书
励志演讲稿300字
2014/08/21 职场文书