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代码制作configure文件示例
Jul 28 Python
Python使用urllib2模块实现断点续传下载的方法
Jun 17 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
opencv实现简单人脸识别
Feb 19 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
python3 使用Opencv打开USB摄像头,配置1080P分辨率的操作
Dec 11 Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
Python更改pip镜像源的方法示例
Dec 01 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 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/01 无线电
PHP 读取文件的正确方法
2009/04/29 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
PHP实现简易blog的制作
2016/10/24 PHP
php传值方式和ajax的验证功能
2017/03/27 PHP
php实现的表单验证类完整示例
2019/08/13 PHP
JavaScript在IE中“意外地调用了方法或属性访问”
2008/11/19 Javascript
javascript 写类方式之六
2009/07/05 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
js代码实现随机颜色的小方块
2015/07/30 Javascript
javascript每日必学之封装
2016/02/23 Javascript
使用JS和canvas实现gif动图的停止和播放代码
2017/09/01 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
Python NumPy库安装使用笔记
2015/05/18 Python
python pandas库的安装和创建
2019/01/10 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
python 控制台单行刷新,多行刷新实例
2020/02/19 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
社区包粽子活动方案
2014/01/21 职场文书
行政人事岗位职责
2014/03/17 职场文书
公司委托书格式范文
2014/04/04 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
银行金融服务方案
2014/06/11 职场文书
先进事迹演讲稿
2014/09/01 职场文书
员工年终自我评价
2014/09/14 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
党支部先进事迹材料
2014/12/24 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
运动会加油稿50字
2015/07/21 职场文书
MySQL中的隐藏列的具体查看
2021/09/04 MySQL