热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python爬虫之採集——360联想词W2版本号

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

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()
执行结果:

python爬虫之採集——360联想词W2版本号

文本例如以下:

python爬虫之採集——360联想词W2版本号

我们打开一个看看:

python爬虫之採集——360联想词W2版本号

验证下:

python爬虫之採集——360联想词W2版本号

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

python爬虫之採集——360联想词W2版本号

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

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





推荐阅读
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • PHP网站部署指南:从零开始搭建PHP网站
    本文提供了详细的步骤指导,帮助开发者在不同环境下成功部署PHP网站,包括在IIS和Apache服务器上的具体操作。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 这个报错出现在userDao里面,sessionfactory没有注入。解决办法:spring整合Hibernate使用test测试时要把spring.xml和spring-hib ... [详细]
  • 利用Selenium框架解决SSO单点登录接口无法返回Token的问题
    针对接口自动化测试中遇到的SSO单点登录系统不支持通过API接口返回Token的问题,本文提供了一种解决方案,即通过UI自动化工具Selenium模拟用户登录过程,从浏览器的localStorage或sessionStorage中提取Token。 ... [详细]
  • C#爬虫Fiddler插件开发自动生成代码
    哈喽^_^一般我们在编写网页爬虫的时候经常会使用到Fiddler这个工具来分析http包,而且通常并不是分析一个包就够了的,所以为了把更多的时间放在分析http包上,自动化生成 ... [详细]
  • 使用EF Core在.Net Core控制台应用中操作SQLite数据库
    本文介绍如何利用Visual Studio 2019和Windows 10环境,通过Entity Framework Core(EF Core)实现对SQLite数据库的读写操作。项目源代码可从百度网盘下载。 ... [详细]
  • 本文详细介绍了Golang中string类型的内部结构及其特性,包括字符串的定义、表示方式、数据结构以及相关的操作方法,如字符串拼接和类型转换等。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 本文总结了在使用React Native开发过程中遇到的一些常见问题及其解决方法,包括配置错误、依赖问题和特定组件的使用技巧。 ... [详细]
  • 在现代移动应用开发中,尤其是iOS应用,处理来自服务器的JSON数据是一项基本技能。无论是使用Swift还是PHP,有效地解析和利用JSON数据对于提升用户体验至关重要。本文将探讨如何在Swift中优雅地处理JSON,以及PHP中处理JSON的一些技巧。 ... [详细]
  • electronvue使用electronupdater实现自动更新
    今天呢,给大家带来一篇干货满满的electron-vue自动升级的教程,话不多说,开始我的表演!配置文件package.jsonbu ... [详细]
  • CSS技巧:创建带有背景图的按钮
    本文详细探讨了使用CSS创建带有背景图片的按钮的方法,并提供了具体的实例代码,帮助开发者解决实际开发中的相关问题。 ... [详细]
  • 择要:Fundebug的JavaScript毛病监控插件同步支撑Vue.js异步毛病监控。Vue.js从降生至今已5年,尤大在本年2月份宣布了严重更新,即Vue2.6。更新包含新增 ... [详细]
  • Python脚本实现批量删除多种类型文件的扩展名
    本文介绍了一个Python脚本,用于批量处理并移除指定目录下不同格式文件(如png、jpg、xml、json、txt、gt等)的文件扩展名。该方法通过递归遍历文件夹中的所有文件,并对每个文件执行重命名操作。 ... [详细]
author-avatar
风语飘散
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有