手机
当前位置:查字典教程网 >脚本专栏 >python >python实现的一只从百度开始不断搜索的小爬虫
python实现的一只从百度开始不断搜索的小爬虫
摘要:文中用到了BeautifulSoup这个库,目的是处理html文档分析的,因为我只是提取了title的关键字,所以可以用正则表达式代替,还有...

文中用到了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 paramiko实现ssh远程访问的方法

python使用paramiko模块实现ssh远程登陆上传文件并执行

Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器

python解析json实例方法

python处理文本文件实现生成指定格式文件的方法

python实现的阳历转阴历(农历)算法

python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)

Python实现的金山快盘的签到程序

python选择排序算法的实现代码

python实现的防DDoS脚本

精品推荐
分类导航