最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python結(jié)合shell查詢google關(guān)鍵詞排名的實現(xiàn)代碼

 更新時間:2016年02月27日 21:57:38   作者:運維人生  
這篇文章主要介紹了python結(jié)合shell查詢google關(guān)鍵詞排名的實現(xiàn)代碼,需要的朋友可以參考下

最近老婆大人的公司給老婆大人安排了一個根據(jù)關(guān)鍵詞查詢google網(wǎng)站排名的差事。老婆大人的公司是做seo的,查詢的關(guān)鍵詞及網(wǎng)站特別的多,看著老婆大人這么辛苦的重復(fù)著查詢工作,心疼啊。所以花點時間用python寫了一個根據(jù)關(guān)鍵詞搜索網(wǎng)站排名的py腳本。

在寫這個腳本之前,我也曾在網(wǎng)站搜索過關(guān)于在google查排名的腳本。很多是利用google的api。但是我測試了一下,不準(zhǔn)。所以,自己寫一個吧。

腳本內(nèi)容如下:(關(guān)鍵詞我在網(wǎng)站隨便找了幾個。以做測試使用)

#vim keyword.py 
import urllib,urllib2,cookielib,re,sys,os,time,random 
cj = cookielib.CookieJar() 
vibramkey=['cheap+five+fingers','vibram+five+fingers'] 
beatskey=['beats+by+dre','beats+by+dre+cheap'] 
vibramweb=['vibramforshoes.com','vibramfivetoeshoes.net','vibramfivefingersshoesx.com '] 
beatsweb=['beatsbydre.com','justlovebeats.com'] 
allweb=['vibramweb','beatsweb'] 
def serchkey(key,start): 
    url="http://www.google.com/search?hl=en&q=%s&revid=33815775&sa=X&ei=X6CbT4GrIoOeiQfth43GAw&ved=0CIgBENUCKAY&start=%s" %(key,start) 
    try: 
        opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
        opener.addheaders = [('User-agent', 'Opera/9.23')] 
        urllib2.install_opener(opener) 
        req=urllib2.Request(url) 
        response =urllib2.urlopen(req) 
        content = response.read() 
        f=open('google','w') 
        f.write(content) 
        tiqu=os.popen("grep -ioP '(?<=<cite>).*?(?=</cite>)' google|sed -r 's/(<*\/*cite>|<\/*b>)//g'").readlines() 
    except: 
        changeip() 
    else: 
        for yuming in pinpai: 
                a=1 
                for shouyuming in tiqu: 
                    real=shouyuming.find(yuming) 
                    if real>0: 
                        if start==0: 
                            page=1 
                        elif start==10: 
                            page=2 
                        elif start==20: 
                            page=3 
                        elif start==30: 
                            page=4 
                        else: 
                            page=5 
                        lastkey=key.replace("+"," ") 
                        xinxi="%s\t\t %s\t\t page%s,%s<br>\n" %(yuming,lastkey,page,a) 
                        xinxifile=open('index.html','a') 
                        xinxifile.write(xinxi) 
                        xinxifile.close() 
                    a=a+1 
def changeip(): 
    ip=random.randint(0,2) 
    de="route del -host google.com" 
    add="route add -host google.com eth1:%s" %ip 
    os.system(de) 
    os.system(add) 
    print "changip to %s" %ip 
pinpaiid=0 
for x in vibramkey,beatskey: 
    if  pinpaiid == 0: 
        pinpai=vibramweb 
    elif pinpaiid == 1: 
        pinpai=beatsweb 
pinpaiid=pinpaiid+1 
    for key in x: 
        for start in 0,10,20,30,40: 
            serchkey(key,start) 
    changeip()    
os.system("sh paiban.sh") 
#vim paiban.sh 
#! /bin/bash 
sort index.html -o index.html 
line=`wc -l index.html|awk '{print $1}'` 
yuming2=`sed -n 1p index.html|awk '{print $1}'` 
for i in `seq 2 $line` 
do 
yuming=`sed -n "$i"p index.html|awk '{print $1}'` 
if [ $yuming == $yuming2 ];then 
sed -i ""$i"s/"$yuming"/\t\t/g" index.html 
else 
yuming2=$yuming 
fi 
done 

這段腳本分兩部分,第一部分是python利用關(guān)鍵詞搜索google的頁面。老婆大人說只要每一個關(guān)鍵詞的前5頁就可以。所以只查詢了前5頁。
第二部分是將查詢出來的結(jié)果進(jìn)行排版。也就是最下面調(diào)用paiban.sh 所做的事情,讓最終出來的結(jié)果為如下格式:

網(wǎng)站1        關(guān)鍵詞1  第幾頁  第幾名
               關(guān)鍵詞2   第幾頁  第幾名
             關(guān)鍵詞3   第幾頁  第幾名

網(wǎng)站2        關(guān)鍵詞1  第幾頁  第幾名
               關(guān)鍵詞2   第幾頁  第幾名
              關(guān)鍵詞3   第幾頁  第幾名
下面就來對程序進(jìn)行講解。

import urllib,urllib2,cookielib,re,sys,os,time,random  #加載模塊 
cj = cookielib.CookieJar() 
vibramkey=['cheap+five+fingers','vibram+five+fingers'] #定義要查詢的關(guān)鍵詞組1,里面的單引號里面就是要查詢的關(guān)鍵詞。 
beatskey=['beats+by+dre','beats+by+dre+cheap']    #同上,定義關(guān)鍵詞組2,這個是另一組關(guān)鍵詞。 
vibramweb=['vibramforshoes.com','vibramfivetoeshoes.net','vibramfivefingersshoesx.com '] 
#定義關(guān)健詞組1要查詢的網(wǎng)站 
beatsweb=[' beatsbydre.com',' justlovebeats.com'] #定義關(guān)健詞組2要查詢的網(wǎng)站 
allweb=['vibramweb','beatsweb']  #這里定義了一個所有網(wǎng)站的組,下面好調(diào)用。 
def serchkey(key,start): #這里定義一個函數(shù),key為查詢的關(guān)健詞,start為頁面,通過google查詢頁面可以看出來每個頁面除ads外只有十條記錄,start=0時顯示為第一個頁面第一至第十條記錄,start=10時,顯示第二頁的第一至十條記錄,以些類推。 
    url="http://www.google.com/search?hl=en&q=%s&revid=33815775&sa=X&ei=X6CbT4GrIoOeiQfth43GAw&ved=0CIgBENUCKAY&start=%s" %(key,start)  #這個定義了查詢的URL 
    try: 
        opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
        opener.addheaders = [('User-agent', 'Opera/9.23')] #模擬瀏覽器訪問 
        urllib2.install_opener(opener) 
        req=urllib2.Request(url) #用urllib2訪問 
        response =urllib2.urlopen(req) 
        content = response.read()#這塊是模擬瀏覽器進(jìn)行訪問url的頁面并讀取源代碼 
        f=open('google','w') 
        f.write(content) #將讀取出來的內(nèi)容保存到google的一個頁面里。 
        tiqu=os.popen("grep -ioP '(?<=<cite>).*?(?=</cite>)' google|sed -r 's/(<*\/*cite>|<\/*b>)//g'").readlines() #這里利用了系統(tǒng)命令了。利用正則的零寬斷言提直接取出第一到第十位的網(wǎng)站域名。 
    except: 
        changeip() #這邊是怕訪問過多被google封了。所以這里有一個換ip的函數(shù),下面有定義。上面如果try失敗了,就執(zhí)行換ip的動作。 
    else: 
        for yuming in pinpai:    #循環(huán)讀取要查找的網(wǎng)站 
                a=1 
                for shouyuming in tiqu:  #循環(huán)讀取查找出來的網(wǎng)站 
                    real=shouyuming.find(yuming)  #將查找出來的網(wǎng)站與需要查找的網(wǎng)站進(jìn)行比對 
                    if real>0: 
                        if start==0: 
                            page=1 
                        elif start==10: 
                            page=2 
                        elif start==20: 
                            page=3 
                        elif start==30: 
                            page=4 
                        else: 
                            page=5 
         #這里的查看域名在google搜索后的哪一頁。 
                        lastkey=key.replace("+"," ") #將定義的關(guān)鍵詞中間的加號去掉。 
                        print yuming,lastkey,page,a 
                        xinxi="%s\t\t %s\t\t 第%s頁,排名%s\n" %(yuming,lastkey,page,a) 
                        xinxifile=open('index.html','a') 
                        xinxifile.write(xinxi) 
                        xinxifile.close() #將查找出來的信息寫入到index.html文件里 
                    aa=a+1 
def changeip():  #這里是定義查詢時換ip的函數(shù)。如果機器只有一個ip那就不用這段了。 
    ip=random.randint(0,10)         #隨機生成0-10的數(shù) 
    del="route del -host google.com"      #刪除路由命令 
    add="route add -host google.com eth1:%s" %ip #添加路由命令 
    os.system(del)                #執(zhí)行刪除路由命令 
    os.system(add)   #執(zhí)行添加路由命令 
    print "changip to %s" %ip           #打印更改路由信息 
pinpaiid=0  
for x in vibramkey,beatskey:     #循環(huán)所有的關(guān)鍵詞組 
    if  pinpaiid == 0:     # 對應(yīng)關(guān)鍵詞組與要查詢的網(wǎng)站組 
        pinpai=vibramweb 
    elif pinpaiid == 1: 
        pinpai=beatsweb 
pinpaiidpinpaiid=pinpaiid+1 
    for key in x:        #循環(huán)關(guān)鍵詞組里的關(guān)鍵詞 
        for start in 0,10,20,30,40:    #定義所要查找的google的頁面 
            serchkey(key,start)   
    changeip()              #更改ip函數(shù)。在每一組關(guān)鍵詞查詢完畢后更改ip. 

以上命令執(zhí)行后,我們看一下index.html文件內(nèi)容。如下:

復(fù)制代碼 代碼如下:

#cat index.html
vibramforshoes.com               cheap five fingers              page 1,rank 3
vibramfivetoeshoes.net           cheap five fingers              page 5,rank 5
vibramforshoes.com               vibram five fingers             page 1,rank 6
vibramfivetoeshoes.net           vibram five fingers             page 5,rank 10
beatsbydre.com                   beats by dre                    page 1,rank 1
justlovebeats.com                beats by dre                    page 5,rank 7
beatsbydre.com                   beats by dre cheap              page 2,rank 2
beatsbydre.com                   beats by dre cheap              page 2,rank 3
beatsbydre.com                   beats by dre cheap              page 5,rank 10

如圖:

這樣看很亂,那么我們?nèi)绾尾拍苓_(dá)到上面所講 一個站后面對應(yīng)多個關(guān)鍵詞的格式呢,這里我們就要用到 paiban.sh 這個小腳本了。我們把paiban.sh放在py程序的最后,當(dāng)執(zhí)行py程序執(zhí)行完畢后,執(zhí)行paiban.sh 這個paiban.sh已經(jīng)加在py程序里面了,所有不需要另外執(zhí)行。我這里主要看一下區(qū)別。所有在py程序里注釋了。

#sh  paiban.sh 
#cat index.html 
beatsbydre.com          beats by dre cheap       page 2,rank 2 
                 beats by dre cheap       page 2,rank 3 
                 beats by dre cheap       page 5,rank 10 
                 beats by dre          page 1,rank 1 
justlovebeats.com        beats by dre          page 5,rank 7 
vibramfivetoeshoes.net      cheap five fingers       page 5,rank 5 
                 vibram five fingers       page 5,rank 10 
vibramforshoes.com        cheap five fingers       page 1,rank 3 
                 vibram five fingers       page 1,rank 6 

如圖:

這樣就能達(dá)到上面的效果了。排版也很清楚,哪個站對應(yīng)哪個關(guān)鍵詞。在第幾頁,第幾位,一目了然。

我們也對paiban.sh這個腳本做一下解釋。

#vim paiban.sh 
#! /bin/bash 
sort index.html -o index.html          #先把index.html文件排下序,再寫入index.html 
line=`wc -l index.html|awk '{print $1}'`     #統(tǒng)計行 
yuming2=`sed -n 1p index.html|awk '{print $1}'`  #取第一行的域名 給yuming2 
for i in `seq 2 $line`              #從第二行開始了取域名 
do 
yuming=`sed -n "$i"p index.html|awk '{print $1}'` 
if [ $yuming == $yuming2 ];then        
sed -i ""$i"s/"$yuming"/\t\t/g" index.html    #如果下一行域名與yuming2域名相同,就把下一行域名替換成空 
else 
yuming2=$yuming                  #如果不相等,就把下一行的域名給yuming2變量       
fi 
done 


好了。這個小腳本挺好用的,老婆大人天天在用。為她減輕了不少工作量。直夸我能干。。。,哈哈。。如果有看不明白的,歡迎加QQ討論。QQ:410018348

相關(guān)文章

  • Python正則表達(dá)式?r'(.*)?are?(.*?)?.*'的深入理解

    Python正則表達(dá)式?r'(.*)?are?(.*?)?.*'的深入理解

    日常的開發(fā)工作中經(jīng)常會有處理字符串的需求,簡單的字符串處理,我們使用python內(nèi)置的字符串處理函數(shù)就可以了,但是復(fù)雜的字符串匹配就需要借助正則表達(dá)式了,這篇文章主要給大家介紹了關(guān)于Python正則表達(dá)式?r‘(.*)?are?(.*?)?.*‘的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • TensorFlow模型保存和提取的方法

    TensorFlow模型保存和提取的方法

    這篇文章主要為大家詳細(xì)介紹了TensorFlow模型保存和提取的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python實現(xiàn)圖片,視頻人臉識別(dlib版)

    python實現(xiàn)圖片,視頻人臉識別(dlib版)

    這篇文章主要介紹了python實現(xiàn)圖像,視頻人臉識別(dlib版)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • pytorch 中pad函數(shù)toch.nn.functional.pad()的用法

    pytorch 中pad函數(shù)toch.nn.functional.pad()的用法

    今天小編就為大家分享一篇pytorch 中pad函數(shù)toch.nn.functional.pad()的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python蓄水池算法的應(yīng)用案例與代碼詳解

    Python蓄水池算法的應(yīng)用案例與代碼詳解

    蓄水池算法(Reservoir Sampling)是一種用于處理大規(guī)模數(shù)據(jù)流的隨機抽樣算法,該算法能夠在不知道數(shù)據(jù)流大小的情況下,從數(shù)據(jù)流中均勻隨機地抽取固定大小的樣本,本文給大家介紹了一個詳細(xì)的Python蓄水池算法的實現(xiàn),包括完整的代碼示例,需要的朋友可以參考下
    2024-11-11
  • 用python開發(fā)一款操作MySQL的小工具

    用python開發(fā)一款操作MySQL的小工具

    一個簡單的使用python操作mysql的工具,提供了一些類似sql語法的方法,最終拼接成sql??梢院芎玫靥幚硪恍┏R妶鼍埃灰蕾噊rm 的同時避免手寫大量sql
    2021-05-05
  • 如何通過一篇文章了解Python中的生成器

    如何通過一篇文章了解Python中的生成器

    生成器指的是生成器對象,可以由生成器表達(dá)式得到,也可以使用yield關(guān)鍵字得到一個生成器函數(shù),調(diào)用這個函數(shù)得到一個生成器對象,下面這篇文章主要給大家介紹了關(guān)于Python中生成器的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • python lambda表達(dá)式(匿名函數(shù))寫法解析

    python lambda表達(dá)式(匿名函數(shù))寫法解析

    這篇文章主要介紹了python lambda表達(dá)式(匿名函數(shù))寫法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 探究Python多進(jìn)程編程下線程之間變量的共享問題

    探究Python多進(jìn)程編程下線程之間變量的共享問題

    這篇文章主要介紹了探究Python多進(jìn)程編程下線程之間變量的共享問題,多進(jìn)程編程是Python學(xué)習(xí)進(jìn)階中的重要知識,需要的朋友可以參考下
    2015-05-05
  • Python+PyQt5自制監(jiān)控小工具

    Python+PyQt5自制監(jiān)控小工具

    這篇文章主要為大家詳細(xì)介紹了如何通過使用python實現(xiàn)對計算機攝像頭的調(diào)用從而實現(xiàn)攝像監(jiān)控的功能,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-03-03

最新評論

吴川市| 神农架林区| 通渭县| 田东县| 正镶白旗| 桑植县| 万宁市| 青川县| 双流县| 上思县| 高州市| 崇阳县| 丹巴县| 邵阳市| 恩施市| 临邑县| 扬中市| 大丰市| 汪清县| 房产| 鲁甸县| 禄劝| 乌鲁木齐县| 安远县| 虞城县| 大同市| 新巴尔虎左旗| 扶沟县| 铜山县| 体育| 南澳县| 文成县| 康保县| 赫章县| 界首市| 岫岩| 施甸县| 韶关市| 隆化县| 靖西县| 临漳县|