• 网站seo优化--jsoup 批量分析相关网站 标签,描述,关键词.


    网站seo优化--jsoup 批量分析相关网站 标签,描述,关键词.

    因为自己写了一个磁力搜索网站Btgoogle,准备进行优化一下,需要分析其他的网站的优化情况。

    Java的Jsoup类库和PHP的一个Simple_html_dom框架具有异曲同工之妙,非常的相像.

    比如Jsoup里面doc.select(".classname[:eq()]")Simple_html_dom里面的$html->find(".classname",[eq])都是尽量完整Jquery里面的功能.非常实用.后面对这两个东西准备对比分析一下.对比而言,Jsoup比功能还是强大不少,更加接近JS.

    Python

    import urllib2
    import re
    import sys
    url= "http://www.*****.com"
    req=urllib2.Request(url)
    r=urllib2.urlopen(req)
    html=r.read()
    m = re.search('<meta name="keywords" content="(.*)"/>',html)
    print m.group(1)
    m = re.search('<meta name="description" content="(.*)"/>',html)
    print m.group(1)

    简洁的python版,python效率还是很不错的,不过看Jsoup那么方便,就直接用Jsoup

    Jsoup

    package keyword;
    import java.io.IOException;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    public class keyword {
        public static void main(String[] args) {
        	int i=0;
        	int error1=2;
            for(i=0;i<=10;i++){
        	   Document doc = null;
                try {
                    doc = Jsoup.connect("http://www.baidu.com/s?wd=磁力搜索&pn="+i*10).get();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Elements url = doc.getElementsByClass("g");
                for (Element link : url){
                	String linktext=link.text().replaceAll("/(.*)","");
                	linktext="http://"+linktext;
                	System.out.println("链接:"+linktext);
                	Document linkin = null;
                    try {
                        linkin = Jsoup.connect(linktext).timeout(5000).header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0").get();
                    } catch (Exception e) {
                        error1=1;
                    }
                    if(error1!=1){
                    String title = linkin.title();
                    Elements metas = linkin.head().select("meta");  
                    for (Element meta : metas) {  
                        String content = meta.attr("content");  
                        if ("keywords".equalsIgnoreCase(meta.attr("name"))) {  
                            System.out.println("关键字:"+content);  
                        }  
                        if ("description".equalsIgnoreCase(meta.attr("name"))) {  
                            System.out.println("网站内容描述:"+content);  
                        }  
                    }  
                    Elements keywords = linkin.getElementsByTag("meta");
                    System.out.println("标题"+title);
                    }
                    error1=0;
                }
            
            }
        }
    }
    

    这里面也有几个坑:

    • 1.403 错误 ,服务器拒绝访问,这是老生常谈的问题了.模拟浏览器就行了.
    • 2.超时错误,使用timeout(timelength)
    • 3.错误处理,当然如果出现错误,整个程序就会暂停,所以异常处理那段搞搞就行try{..}catch{..}

    版权归石头(winipcss@outlook.com)和博客园所有,都拷去那么多了,这一段也拷贝了吧http://www.cnblogs.com/webers/p/4350813.html
  • 相关阅读:
    declare set声明注意
    Winform 的dadagridview控件的修改操作
    VS2010,VS2008,VS2005;工程之间的转换
    C#程序跨平台?
    上网黑色护眼,设置浏览器黑色风格
    AutoCompleteSource从文件里读取自动填充内容
    两个checkbox的控件控制操作只能选其一
    《博客园精华集CLR/C#分册》第三轮筛选结果 转载
    TransactSQL 示例 查询某个数据库内的所有表的记录行数及其总和
    EF 4.1中内部经常提交的 exec sp_reset_connection 的用途原来是为了重用池中的连接
  • 原文地址:https://www.cnblogs.com/webers/p/4350813.html
Copyright © 2020-2023  润新知