可能因?yàn)槁殬I(yè)原因,每看到一個(gè)網(wǎng)址音诈,都好奇它的流量情況幻碱,不知道你是否和我一樣。
這時(shí)一般做法都是打開愛站網(wǎng)细溅,輸入網(wǎng)址查詢褥傍。
對別人來說可能不是一個(gè)很大的需求,但我就是想簡化這個(gè)過程喇聊。
之前想過一個(gè)解決辦法:做個(gè)瀏覽器插件恍风,想看當(dāng)前網(wǎng)站流量數(shù)據(jù)時(shí),點(diǎn)擊彈窗顯示誓篱。
理論上這個(gè)方法可行朋贬,但需要花時(shí)間研究Chrome插件開發(fā)。
http://open.chrome.#/extension_dev/overview.html
后來我選擇了一種變通方法窜骄,能實(shí)現(xiàn)類似效果锦募,還可以脫離瀏覽器運(yùn)行。
工具實(shí)現(xiàn)思路
希望實(shí)現(xiàn)的效果
復(fù)制任意網(wǎng)址(不一定網(wǎng)站首頁)邻遏,然后按某個(gè)快捷鍵御滩,自動(dòng)提取域名(可以到子域名一級)提交給愛站網(wǎng)查詢,然后把結(jié)果返回彈窗顯示党远。
經(jīng)過琢磨研究做出來的效果如下:
如何實(shí)現(xiàn)呢削解?
開發(fā)環(huán)境:Macbook + 系統(tǒng)自動(dòng)Automator + Python(或PHP)
Python代碼實(shí)現(xiàn)按網(wǎng)址查流量
# coding = utf-8
__author = 'joe'
# 導(dǎo)入 requests庫,一般簡單采集都推薦使用這個(gè)庫
import requests
# 導(dǎo)入BeautifulSoup做DOM解析沟娱,避免有些網(wǎng)站代碼不規(guī)范讓lxml不好用
from bs4 import BeautifulSoup as bs
# 導(dǎo)入正則庫
import re
# 導(dǎo)入隨機(jī)數(shù)庫
import random
# 這個(gè)庫可以從URL中解析域名
from tld import get_tld
# 判斷是否為URL的庫
import validators
# 導(dǎo)入系統(tǒng)庫
import sys
import io
# 解決編碼問題
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
# 定義一個(gè)獲取HTML代碼的方法
def get_html(url):
# 定義http的請求Header
headers = {}
# random.randint(1,99) 為了生成1到99之間的隨機(jī)數(shù)氛驮,讓UserAgent變的不同。
headers['User-Agent'] = "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0" + str(random.randint(1,99))
# Referer地址使用待查詢的網(wǎng)址
headers['Referer'] = url
# 如果是一個(gè)URL济似,則執(zhí)行
if validators.url(url):
# 通過URL獲取域名
domain = get_tld(url)
# 構(gòu)造愛站網(wǎng)查詢地址
aizhan_url = "http://baidurank.aizhan.com/baidu/" + domain + "/"
# 發(fā)送請求矫废,獲取頁面HTML
html = requests.get(aizhan_url, headers = headers, timeout=10).text
# 輸出網(wǎng)址域名
print("網(wǎng)站:" + domain)
# 分析頁面元素,提取需要字段
get_data(html)
# 更多內(nèi)容查看愛站
print("更多查看:" + aizhan_url)
else:
# 提示錯(cuò)誤URL
print("wrong url")
# 定義提取頁面元素的方法
def get_data(html):
# 使用lxml解析器砰蠢,這樣效率更高
soup = bs(html, "lxml")
# 提取頁面中的總流量數(shù)據(jù)
all_pv = soup.select("span.blue")[0].get_text()
# 提取頁面中的總PC流量數(shù)據(jù)
pc_pv = soup.select(".ip strong")[0].get_text()
# 提取頁面中的總移動(dòng)流量數(shù)據(jù)
mobile_pv = soup.select(".ip strong")[1].get_text()
# 提取PC權(quán)重
pc_weight = soup.select(".fl .br strong")[0].get_text()
# 提取移動(dòng)權(quán)重
mobile_weight = soup.select(".fl .br strong")[1].get_text()
# 提取PC關(guān)鍵詞量蓖扑,數(shù)值越大,說明網(wǎng)站越強(qiáng)
pc_words = soup.select("a#cc1 strong")[0].get_text()
# 提取M關(guān)鍵詞量台舱,越大越好
mobile_words = soup.select("a#cc2 strong")[0].get_text()
# 下面是輸出
print("總流量:" + all_pv)
print("PC總流量:" + pc_pv)
print("M總流量:" + mobile_pv)
print("PC權(quán)重:" + pc_weight)
print("M權(quán)重:" + mobile_weight)
print("PC關(guān)鍵詞量:" + pc_words)
print("M關(guān)鍵詞量:" + mobile_words)
print("流量大的目錄:")
# 循環(huán)讀取流量大的目錄URL律杠,顯示5條。
for index,item in enumerate(soup.select("ul.urlpath li a")):
if(index <= 5):
print(item.get_text().strip())
# 主程序
if __name__ == "__main__":
# 測試網(wǎng)址
url = "http://www.huangye88.com"
# 通過命令行獲取第1個(gè)參數(shù)作為待查詢網(wǎng)址
post_url = sys.argv[1]
# 校驗(yàn)網(wǎng)址是否為URL
if validators.url(post_url): # 執(zhí)行查詢程序
get_html(post_url)
else:
# 提示錯(cuò)誤網(wǎng)址
print("wrong url")
如何通過快捷鍵執(zhí)行程序竞惋?
步驟1:打開Mac電腦下的Automator柜去,新建文件,文稿類型選“服務(wù)”拆宛。點(diǎn)擊資源庫下的“實(shí)用工具”嗓奢,然后再雙擊 “運(yùn)行AppleScript”
輸入如下內(nèi)容:
set website to (the clipboard as text)
set x to do shell script "/Users/admin/.pyenv/shims/python3 /Users/admin/Documents/newstart/php/phpspider/projects/just4fun/projects/python/getsiteinfo/get_site_info.py " & website
display dialog x
第一行的意思是:把剪貼板里的數(shù)據(jù)當(dāng)做純文本,賦值給變量website
第二行的意思是:把腳本執(zhí)行的結(jié)果賦值給x(注意:&是連接字符串浑厚,這樣可以把網(wǎng)址傳給腳本)
第三行的意思是:把結(jié)果輸出到對話框中股耽。
你可以復(fù)制一個(gè)網(wǎng)站根盒,然后點(diǎn)擊運(yùn)行測試,看是否會彈出包含正確內(nèi)容的對話框物蝙。
把這個(gè)服務(wù)文件保存炎滞,命名為:getAizhan
注意,如果安裝了多Python版本運(yùn)行環(huán)境茬末,要設(shè)置希望使用的版本厂榛。比如我這里用的Python3
步驟2:
下面我們設(shè)置快捷鍵,打開Mac OSX中的系統(tǒng)偏好設(shè)置丽惭,點(diǎn)擊鍵盤->服務(wù)击奶。
找到我們剛才創(chuàng)建的服務(wù)“getAizhan”,勾選上后設(shè)置一個(gè)自己喜歡的快捷鍵责掏,如下圖所示柜砾。(Ctrl+ALt+Command+M)
到此為止,一切搞定换衬,以后查網(wǎng)站流量痰驱,做SEO分析都省事不少。
這個(gè)工具的PHP版本:https://zhuanlan.zhihu.com/p/24577887
借助這個(gè)思路瞳浦,還可以開發(fā)其他好用的小工具担映,比如用印象筆記API存有價(jià)值的句子: