http://blog.csdn.net/recsysml/article/details/30541197,我的这个博文介绍了对应的简单的方法做一个联想词的爬虫,并且还承诺了下面优化:

下一版本号的优化考虑:

1.让用户自助输入关键i词,不要事先定义关键词列表

2.按回车进行下一个关键词输入

3.输出结果保存txt文本

4.用户输入exit,程序退出

开工:

1.让用户输入关键词,首先想到raw_input(),这个非常好解决

2.回车进行下一个关键词输入,这个其有用一个print打印你的引导即可,如今实现的是仅仅要不输入exit按回车都能进行下一个关键词录入,进入循环

3.输出结果保存txt文本,输入一个词,把结果放到对应的txt文本下,如输入“博客”,则保存本地为“博客.txt”

4.用户输入exit,程序退出,设置一个布尔标志变量,True/False,当用户输入exit时,变量值为False,终止循环

大体框架还是上一个博文写的那样,仅仅是基于曾经的代码进行改动,详细代码例如以下:

# -*- coding: utf-8 -*-
"""
Created on Sat Jun 16 15:54:42 2014 @author: 416
"""
#---------------------
# 程序:爬虫採集360搜索关联词
# 语言:python2.7
# 版本号:w2
# 时间:2014-06-14@PM
# 作者:wxx
#--------------------- import urllib
import urllib2
import re
import time
import codecs
from random import choice class Related_Model:
def __init__(self,word):
self.word = word
self.enable = False#传说中的标志位
self.datas = []#存放关联词的列表
print u'已启动关联词抓取,嘿咻嘿咻。。' def GetWord(self):
quote_word = urllib.quote(self.word)
print u'你输入的关键词是:',self.word
url = "http://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word,obdata&word="+str(quote_word)
#头信息
headers = {
"GET":url,
"Host":"sug.so.360.cn",
"Referer":"http://www.so.com/",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 QIHU 360SE"
} iplist = ["14.29.117.36:80","222.66.115.229:80","59.46.72.245:8080"]
ip = choice(iplist)
#使用IP代理server
proxy_handler = urllib2.ProxyHandler({'http': 'http://'+ip})
opener = urllib2.build_opener(proxy_handler)
urllib2.install_opener(opener)
req = urllib2.Request(url)
for key in headers:
req.add_header(key,headers[key])
html = urllib2.urlopen(req).read()
#将其它编码变成unicode编码
unicodeWord = html.decode("utf-8")
#正則表達式,findall方法返回一个列表
ss = re.findall('"word":\"(.*?)\"',unicodeWord)
for item in ss:
self.datas.append(item+'\t') def SaveWord(self):
f = codecs.open(self.word+'.txt', 'w', 'utf-8')
#f = open('word.txt','w')
for item in self.datas:
print type(item) #item的类型
f.write(item)
time.sleep(0.2)#要不要无所谓
f.close() print u'文件已经打包成txt保存到本地'
print u'按exit退出或按回车继续' myInput = raw_input()
if myInput == 'exit':
self.enable = False
else:
self.word = raw_input(u'请输入关键词:')
#列表要清零,不然上一个关键词的关联词依旧在列表中,又要重写进txt中
self.datas = []
self.Start() def Start(self):
self.enable = True
print u'正在搜索中。。。'
while self.enable:
self.GetWord()
self.SaveWord() #-------- 程序入口处 ------------------
print u"""#---------------------------------------
# 程序:爬虫採集360搜索关联词
# 版本号:w2
# 作者:wxx
# 日期:2014-06-16@PM
# 语言:Python 2.7
# 操作:用户输入关键词,程序返回相关关联词并保存到本地文件
# 功能:将用户输入的关键词的联想词打包txt存储到本地。
#---------------------------------------
"""
word = raw_input(u'请输入关键词:')
print u'输入的是:',word
myModel = Related_Model(word)
myModel.Start()

执行结果:

文本例如以下:

我们打开一个看看:

验证下:

是对的,可是,有个问题,我要说下,就是中文输入的时候,会抓不到。。。也不是抓不到,就是用户输入中文关键词时,根本就显示不了中文,博主近期事多,不能花非常多精力各种调,可是为何上一个版本号没有问题,想不懂,等下一篇博文解决这个bug,截图看下中文情况:

红框中应该有科学俩字啊,在我測试之后,发现首先输入英文再输入中文,有时候能正常,有时候不行,凌乱啊

下一篇博客我会修正这些bug,大家有啥好建议,或者看出来bug在哪里,给我留言啊!

python爬虫之採集——360联想词W2版本号的更多相关文章

  1. python爬行动物集合360联想词搜索

    想法和一些代码引用邸一幕python培训黄哥python爬虫联想词视频,但是太罗嗦.顺便整理,而到现在为止,360不傻.它已演变,用原来的方式,有些bug,这接着说. 正题例如以下: 语言:pytho ...

  2. Selenium2+python自动化34-获取百度输入联想词

    前言 最近有小伙伴问百度输入后,输入框下方的联想词如何定位到,这个其实难度不大,用前面所讲的元素定位完全可以定位到的. 本篇以百度输入框输入关键字匹配后,打印出联想词汇. 一.定位输入框联想词 1.首 ...

  3. Selenium2+python自动化34-获取百度输入联想词【转载】

    前言 最近有小伙伴问百度输入后,输入框下方的联想词如何定位到,这个其实难度不大,用前面所讲的元素定位完全可以定位到的. 本篇以百度输入框输入关键字匹配后,打印出联想词汇. 一.定位输入框联想词 1.首 ...

  4. 用Python爬虫对豆瓣《敦刻尔克》影评进行词云展示

    最近很想看的一个电影,去知乎上看一下评论,刚好在学Python爬虫,就做个小实例. 代码基于第三方修改 原文链接  http://python.jobbole.com/88325/#comment-9 ...

  5. python爬虫——词云分析最热门电影《后来的我们》

    1 模块库使用说明 1.1 requests库 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更 ...

  6. Python爬虫与数据分析之爬虫技能:urlib库、xpath选择器、正则表达式

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

  7. [python爬虫] Selenium定向爬取海量精美图片及搜索引擎杂谈

    我自认为这是自己写过博客中一篇比较优秀的文章,同时也是在深夜凌晨2点满怀着激情和愉悦之心完成的.首先通过这篇文章,你能学到以下几点:        1.可以了解Python简单爬取图片的一些思路和方法 ...

  8. Python爬虫和情感分析简介

    摘要 这篇短文的目的是分享我这几天里从头开始学习Python爬虫技术的经验,并展示对爬取的文本进行情感分析(文本分类)的一些挖掘结果. 不同于其他专注爬虫技术的介绍,这里首先阐述爬取网络数据动机,接着 ...

  9. Python爬虫实战(4):豆瓣小组话题数据采集—动态网页

    1, 引言 注释:上一篇<Python爬虫实战(3):安居客房产经纪人信息采集>,访问的网页是静态网页,有朋友模仿那个实战来采集动态加载豆瓣小组的网页,结果不成功.本篇是针对动态网页的数据 ...

随机推荐

  1. 解决angular的post请求后SpringMVC后台接收不到参数值问题的方法

    这是我后台SpringMVC控制器接收isform参数的方法,只是简单的打出它的值: @RequestMapping(method = RequestMethod.POST) @ResponseBod ...

  2. LA 6540 Fibonacci Tree

    以前做过的题···重新做一遍之后怎么做怎么wa···后来GG了···第二天看不知道为啥A了···难道我失忆了? 题意:无向图,边有黑色和白色两种颜色,求是否存在一个生成树中白边的个数是斐波那契数. 解 ...

  3. HDU 5696 区间的价值 暴力

    分析:枚举以该点为最小值,然后找到最大值,更新,相应数组,至此,把区间分割(因为包含这个最小值点已经枚举过) 然后理解理解,感觉好像挺对的...因为后面(即dfs区间变小时)如果再包含最小值节点,也不 ...

  4. 【原】Storm基本概念

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Topologies Streams Spouts Bolts Stream groupings Reli ...

  5. 平面上画n条直线,最多能将平面分成多少部分?

    转自:http://blog.csdn.net/cywosp/article/details/6724522 在一个平面上画1999条直线,最多能将这一平面划分成多少个部分? 没有直线时有一个空间:( ...

  6. Magento 多语言

    一: 1>进入后台选择如下: 2> 显示页面如下: 输入后台登陆的用户名和密码. 3>然后去Magento官网搜索一下 Magento Official Chinese Transl ...

  7. 【转载】sed命令详解

    [转载自]http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html   sed -i  把后面的操作后的文本输出回原文本   ...

  8. Web缓存基础:术语、HTTP报头和缓存策略

    简介 对于您的站点的访问者来说,智能化的内容缓存是提高用户体验最有效的方式之一.缓存,或者对之前的请求的临时存储,是HTTP协议实现中最核心的内容分发策略之一.分发路径中的组件均可以缓存内容来加速后续 ...

  9. mybatis代码生成器配置文件详解

    mybatis代码生成器配置文件详解 更多详见 http://generator.sturgeon.mopaas.com/index.html http://generator.sturgeon.mo ...

  10. 常用的各种标准下载网站(HB GB GJB MH)

    标准分享网 http://www.bzfxw.com/ 标准下载网 http://www.bzxz.net/ 搜标准网   http://www.biaozhunw.com/Index.html 标准 ...