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 相关文章推荐
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 Python
在pycharm 中添加运行参数的操作方法
Jan 19 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
Python 抓取微信公众号账号信息的方法
Jun 14 Python
Kears+Opencv实现简单人脸识别
Aug 28 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
Oct 14 Python
Python 下载及安装详细步骤
Nov 04 Python
Python笔记之facade模式
Nov 20 Python
Python原始套接字编程实例解析
Jan 29 Python
python使用bs4爬取boss直聘静态页面
Oct 10 Python
python如何利用paramiko执行服务器命令
Nov 07 Python
Python基于mediainfo批量重命名图片文件
Dec 29 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
用PHP开发GUI
2006/10/09 PHP
一个域名查询的程序
2006/10/09 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
CCPry JS类库 代码
2009/10/30 Javascript
Javascript 解疑
2009/11/11 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
validationEngine 表单验证插件使用实例代码
2017/06/15 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
微信小程序工具函数封装
2019/10/28 Javascript
ant-design-vue 快速避坑指南(推荐)
2020/01/21 Javascript
Python ljust rjust center输出
2008/09/06 Python
Python实现数据库编程方法详解
2015/06/09 Python
如何打包Python Web项目实现免安装一键启动的方法
2020/05/21 Python
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
酒店服务实习自我鉴定
2013/09/22 职场文书
测绘工程个人的自我评价
2013/11/23 职场文书
人事行政主管岗位职责
2013/12/22 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
放飞梦想演讲稿600字
2014/08/26 职场文书
个人投资合作协议书
2014/10/12 职场文书
新党章的学习心得体会
2014/11/07 职场文书
2015年中学团委工作总结
2015/07/22 职场文书
2015年度女工工作总结
2015/10/22 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python
教你部署vue项目到docker
2022/04/05 Vue.js
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL