seo的工作需要我们会经常查询gg和百度的结果,收录也好排名也好,所以在做查询脚本时一定要控制查询时间来防止百度封锁禁止你的查询,当然有两种方法 1、不断变换代理(当然代价较大) 2、控制查询请求的间隔 3、前两者结合使用
一般的脚本我们从性价比的角度来看还是2比较划算,因此在轻量级的查询完全通过控制查询请求来满足查询需求且不被百度ban掉。
below is code script for querying baidu search
def _get_query(self, key, pn=0):
"""get baidu query"""
query = "http://www.baidu.com/s?wd=%s&pn=%d" % (key, pn)
#query = query.decode('gbk', 'ignore').encode('utf-8', 'ignore')
query = urllib.quote_plus(query, safe=';/?:@&=+$,(')
return query
def _get_reply(self, yurl):
"""控制时间,防止baidu封锁"""
(reply, open_error) = ('', False)
try:
buff = urllib.urlopen(yurl)
reply = buff.read()
buff.close()
sleep(random.randint(5, 8))
except:
open_error = True
self.logger.debug("open %s url error" % yurl)
return (reply, open_error)