urllib采集百度知道搜索结果

Bixby Creek Bridge

 #-*-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()

Leave a Comment