python自动批量搜索关键词是否被法律屏蔽

既然上层有要求,员工就要想尽办法喽。

发了我2W个关键词,搜索引擎的验证码啊,我用多线程能不能放我一马呢?

先放出单线程Python代码吧,不懂的地方理解下注释。

Pyhton代码

# -*- coding: utf-8 -*-  
import requests
import time
import sys
reload(sys)
sys.setdefaultencoding("utf-8") #不多说,中文乱码问题

file = open(sys.argv[1]) #参数1,关键词列表
url = "http://www.baidu.com/s"
words = '根据XXXXXX' #特征内容,自己补全
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.111 Safari/537.36'}
k=0

while 1:
    k = k+1
    line = file.readline().strip('\n')
    payload = {'wd': line} #这么写会自动URL转码
    print "正在提交第%d行".decode('utf8').encode('gbk') %k 
    try:
        while 1:
            r = requests.get(url,headers = headers, params=payload,timeout=10)
            print r.url
            if "verify" not in r.url:  #判断是不是有验证码拦截
                break
            else:
                print "有验证码,暂停1分钟,一分钟后自动重试,可通过开启VPN,或等待10~20分钟解决".decode('utf8').encode('gbk')
                time.sleep(60)
        content = r.content
        if words in content:
            f = open(sys.argv[2],'a') #保存有特征内容的关键词
            print >> f, line
            f.close
        else:
            f = open(sys.argv[3],'a') #保存没有特征内容的关键词
            print >> f, line
            f.close
                
    except requests.exceptions.Timeout:
        print line+"Time out"
        f = open(sys.argv[4],'a') #保存查询出错的关键词
        print >> f, line, "Time out"
        f.close
        pass
        
    except requests.exceptions.ConnectionError:
        print line+"Connection Error"
        f = open(sys.argv[4],'a')
        print >> f, line, "Connection Error"
        f.close
        pass
        
    if not line:
        break

本文由Hack Blog原创,如需转载注明原文链接

作者:test 分类:Python 浏览:1703 评论:0
留言列表
发表评论
来宾的头像