#-*-encoding:utf8-*- ##用处:采集百度知道搜索结果 ##需求来源:某SEO群友 ##代码使用简单介绍:在k1.txt写入关键词,一行一个。 ##while i<* 这个看百度知道搜索结果中pn=后面的值 比如pn=750 就填750,一页结果是10个,自己点到多少页然后把数字放进这里。 ##保存文件是自动保存成text.txt,运行一次自行复制内容到其他位置,或者用excel去重。 import urllib2 import urllib import re import time i = -10 while i<30: #页数自选 i += 10 kw_list = [k.decode("GBK") for k in open("k1.txt")] #从k1.txt导入关键词,应该有涉及到编码处理。 for k in kw_list: kw = k.encode("utf8") #同样是编码处理 gjc = urllib.quote(kw) url='https://zhidao.baidu.com/search?word=' + gjc + '&ie=utf-8&site=-1&sites=0&date=0&pn=' + str(i)#把等号右边的网址赋值给url html=urllib2.urlopen(url).read() #html随意取名 等号后面的动作是打开源代码页面,并阅读 ss = re.findall('target="_blank" class="ti">(.*?)</a>\s*</dt>',html) #正则提取百度知道搜索结果标题 time.sleep(5) #定时,括号内是秒数,自己试,不想要定时的,可以直接删了这句或者在前面加个# for title in ss: print re.sub('<(.*?)em>','',title) #将搜索结果中的<em>、</em>给替换掉 #下面是保存,分别是打开文档,写入并换行,然后关闭。 f = open("text.txt",'a') f.writelines(re.sub('<(.*?)em>','',title) + "\n") f.close()