python批量查询网址是否被百度收录

一个栏目下的内容达到10万条,但百度站长工具显示该栏目只收录了四五千条,意味着大量的内容被百度视为重复或垃圾内容,这种内容要么就是网站做改造,做专题,吸引蜘蛛,争取让这些内容被收录,或者把他们删除掉。

如果要把这些未被收录的删除掉,同时保留那些已经被收录的,就需要批量查询这10万网址哪些已收录,哪些未收录。

python批量查询网址是否被百度收录代码如下:

#coding=utf-8
import urllib,time
import StringIO
import pycurl

def get_baidu_html(url):
    html = StringIO.StringIO()
    c = pycurl.Curl()
    myurl="http://www.baidu.com/s?word=%s"%url
    c.setopt(pycurl.URL, myurl)
    c.setopt(pycurl.WRITEFUNCTION, html.write)
    c.setopt(pycurl.FOLLOWLOCATION, 1)
    c.setopt(pycurl.MAXREDIRS, 5)
    c.setopt(pycurl.CONNECTTIMEOUT, 2000)
    c.setopt(pycurl.TIMEOUT, 2000)
    c.setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)")
    ret = c.perform()
    ret = html.getvalue()
    if "很抱歉,没有找到与" in ret:
        print url,'未收录'
        f = open('/root/no.txt','a')
        f.write(url+'\n')
        f.close()
        return 1
    elif "百度为您找到相关结果约" in ret:
        print url,'已收录'
        return 0
    elif "http://verify.baidu.com" in ret:
        print "出现验证码"
        time.sleep(1800)
        return

if __name__=="__main__":
    urls=open('/root/url.txt','r').readlines()
    oknum=0
    lostnum=0
    for url in urls:
        if get_baidu_html(url.strip()):
            oknum+=1
        else:
            lostnum+=1

    print '收录率:',float(oknum)/(oknum+lostnum)*100,'%'
    print "收录数据共 %s 条"%oknum
    print "未收录数据共 %s 条"% lostnum

以上代码含义是,从/root/url.txt文件中(一行一个url)读取网址,查询结果如果是未收录就依次存在/root/url.txt文件里(一行一个url)。

添加新评论