golang 版本 百度,360,sogou,bing,google 网站收录量批量 查询

long · 2017-09-01 08:15:31 · 5778 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-09-01 08:15:31 的主题,其中的信息可能已经有所发展或是发生改变。

package main

//golang 版本 百度,360,sogou,bing,google  网站收录量批量 查询
//qq:29295842    欢迎技术交流
import (
    "Public_file"
    "fmt"
    "regexp"
    //"strings"
    //"http_get_post"
    "net/url"
    "strings"
    "time"

    "github.com/levigross/grequests"
)

//===============================
func Get_url(url string) (bool, string) {
    defer Public_file.Panic_Err()                                  //异常处理
    ro := &grequests.RequestOptions{DialTimeout: 10 * time.Second} //超时设置
    resp, err := grequests.Get(url, ro)
    if err != nil {
        return false, ""
    } else {
        return true, resp.String()
    }
    return false, ""
}

func url_data_re(urlx string) string {
    //defer Public_file.Panic_Err() //异常处理
    bool_err, resp := Get_url(urlx)
    if bool_err != true {
        return "?"
    }
    //fmt.Printf("urlx:%v\n", urlx)
    //=========================
    reg := `该网站共有.*?<b style=\"color:#333\">(.*?)</b>\s+.*?个网页被百度收录`
    sarr := regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("百度11:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }

    reg = `百度为您找到相关结果约(.*?)个` //找出一条百度
    sarr = regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("百度22:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }

    reg = `百度为您找到相关结果(.*?)个` //找出一条百度
    sarr = regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("百度33:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }
    //=========================
    //=========================
    reg = `找到约.*?<span id="scd_num">(.*?)</span>` //找出一条sogou
    sarr = regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("sogou11:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }

    reg = `找到约.*?<em>(.*?)</em>` //找出一条sogou
    sarr = regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("sogou22:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }

    reg = `找到约.*?<resnum id="scd_num">(.*?)</resnum>` //找出一条sogou
    sarr = regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("sogou33:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }

    reg = `搜狗已为您找到约(.*?)条相关结果` //找出一条sogou
    sarr = regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("sogou33:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }

    //=========================
    reg = `<span class="sb_count">(.*?)条结果</span>` //找出一条bing
    sarr = regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("bing11:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }
    //==============================
    reg = `找到相关结果约(.*?)个` //找出一条so360
    sarr = regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("so36011:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }
    //==============================
    reg = `About(.*?)results` //找出一条google.com      About 1,590 results       找到约(.*?)条结果
    sarr = regexp.MustCompile(reg).FindAllSubmatch([]byte(resp), -1)
    if len(sarr) >= 1 {
        //fmt.Printf("so36011:%v\n", string(sarr[0][1]))
        return string(sarr[0][1])
    }
    //==============================
    //fmt.Printf("======%v\n", resp)
    return "!"
}

//===========
func del_tab(value string) string { //去除空格
    if strings.Contains(value, " ") { //去除首尾空格
        value = strings.Trim(value, " ")            //头部
        value = strings.TrimSpace(value)            //尾部
        value = strings.Replace(value, " ", "", -1) //替换
        //fmt.Printf("yyy:%v\n", href)
    }
    value = strings.Replace(value, ",", "", -1) //替换
    value = strings.Replace(value, ",", "", -1) //替换
    if value == "?" || value == "!" {
        return "0"
    }
    return value
}

func baidu_sl(value string) string { //百度收录数量
    defer Public_file.Panic_Err() //异常处理
    urlx := fmt.Sprintf("http://www.baidu.com/s?wd=site:%s", url.QueryEscape(value))
    return del_tab(url_data_re(urlx))
}

func s360_sl(value string) string { //360收录数量
    urlx := fmt.Sprintf("http://www.haosou.com/s?q=site:%s", url.QueryEscape(value))
    return del_tab(url_data_re(urlx))
}

func sogou_sl(value string) string { //sogou收录数量  web?query=
    urlx := fmt.Sprintf("http://www.sogou.com/sogou?query=site:%s", url.QueryEscape(value))
    return del_tab(url_data_re(urlx))
}

func bing_sl(value string) string { //bing收录数量
    //urlx := fmt.Sprintf("http://www.bing.com/search?q=site:%s&rdrig=B12E61D97E944B7B9740B0392D6197E9", url.QueryEscape(value))
    urlx := fmt.Sprintf("https://cn.bing.com/search?q=site:%s", url.QueryEscape(value))
    return del_tab(url_data_re(urlx))
}

func google_com_sl(value string) string { //google.com收录数量
    ///       About 1,590 results
    urlx := fmt.Sprintf("https://www.google.com/search?source=hp&q=site:%s&oq=site:%s", url.QueryEscape(value), url.QueryEscape(value))
    return del_tab(url_data_re(urlx))
}

//===============================
func main() {
    //    fmt.Printf("=baidu===%v====\n", baidu_sl("www.qq.com"))           //百度收录数量
    //    fmt.Printf("=s360===%v====\n", s360_sl("www.qq.com"))             //360收录数量
    //    fmt.Printf("=sogou===%v====\n", sogou_sl("www.qq.com"))           //sogou收录数量
    //    fmt.Printf("=bing===%v====\n", bing_sl("qq.com")) //bing收录数量
    //    fmt.Printf("=google_com===%v====\n", google_com_sl("www.qq.com")) //google.com收录数量
}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5778 次点击  
加入收藏 微博
2 回复  |  直到 2018-03-26 14:21:26
polaris
polaris · #1 · 8年之前

:thumbsup:

fenglangjuxu
fenglangjuxu · #2 · 7年之前
func Get_url(url string) (bool, string) {
    resp, err := http.Get(url) // 根据URL获取响应
    if err != nil {
        fmt.Fprintf(os.Stderr, "fetch: %v\n", err) // 输出到标准错误输出
        return false, ""
    }
    b, err := ioutil.ReadAll(resp.Body) //从Body中读取全部数据
    defer resp.Body.Close()
    if err != nil {
        fmt.Fprintf(os.Stderr, "reading: %v\n", err)
        return false, ""
    }
    return true, string(b)
}

用原生的http发请求.

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传