<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    何以解憂?唯有Java

    其實程序員也懂得浪漫!
    posts - 90, comments - 637, trackbacks - 0, articles - 2
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    用HtmlParser 寫個簡單的 news爬蟲

    Posted on 2009-05-20 12:44 guanminglin@gmail.com 閱讀(39838) 評論(61)  編輯  收藏 所屬分類: JavaSEJavaEE
        有一段時間沒寫博客了,這幾天回到學(xué)校我同學(xué)要趕著交畢業(yè)設(shè)計,讓我?guī)退麑憘€爬蟲,專門抓搜狐的新聞,我用過爬蟲,但是從來沒有自己寫過爬蟲,于是Google了一下,找到了一篇不錯的文章:使用 HttpClient 和 HtmlParser 實現(xiàn)簡易爬蟲 .  參考里面的代碼,自己寫了個簡易的搜狐新聞爬蟲。

        爬蟲的主要工做就是到搜狐的新聞首頁上去抓取新聞,然后將新聞添加到數(shù)據(jù)庫中。
    代碼其實很簡單的:
    LinkParser.java
    import com.sohu.SohuNews;
    import java.util.HashSet;
    import java.util.Set;
    import org.htmlparser.Node;
    import org.htmlparser.NodeFilter;
    import org.htmlparser.Parser;
    import org.htmlparser.filters.NodeClassFilter;
    import org.htmlparser.filters.OrFilter;
    import org.htmlparser.tags.LinkTag;
    import org.htmlparser.util.NodeList;
    import org.htmlparser.util.ParserException;

    /**
     *  這個類是用來搜集新聞鏈接地址的。將符合正則表達式的URL添加到URL數(shù)組中。
     * 
    @author guanminglin
     
    */
    public class LinkParser {
        
    // 獲取一個網(wǎng)站上的鏈接,filter 用來過濾鏈接

        
    public static Set<String> extracLinks(String url, LinkFilter filter) {

            Set
    <String> links = new HashSet<String>();
            
    try {
                Parser parser 
    = new Parser(url);
                parser.setEncoding(
    "gb2312");
                
    // 過濾 <frame >標簽的 filter,用來提取 frame 標簽里的 src 屬性所表示的鏈接
                NodeFilter frameFilter = new NodeFilter() {

                    
    public boolean accept(Node node) {
                        
    if (node.getText().startsWith("frame src=")) {
                            
    return true;
                        } 
    else {
                            
    return false;
                        }
                    }
                };
                
    // OrFilter 來設(shè)置過濾 <a> 標簽,和 <frame> 標簽
                OrFilter linkFilter = new OrFilter(new NodeClassFilter(
                        LinkTag.
    class), frameFilter);
                
    // 得到所有經(jīng)過過濾的標簽
                NodeList list = parser.extractAllNodesThatMatch(linkFilter);
                
    for (int i = 0; i < list.size(); i++) {
                    Node tag 
    = list.elementAt(i);
                    
    if (tag instanceof LinkTag)// <a> 標簽
                    {
                        LinkTag link 
    = (LinkTag) tag;
                        String linkUrl 
    = link.getLink();// url
                        if (filter.accept(linkUrl)) {
                            links.add(linkUrl);
                        }
                    } 
    else// <frame> 標簽
                    {
                        
    // 提取 frame 里 src 屬性的鏈接如 <frame src="test.html"/>
                        String frame = tag.getText();
                        
    int start = frame.indexOf("src=");
                        frame 
    = frame.substring(start);
                        
    int end = frame.indexOf(" ");
                        
    if (end == -1) {
                            end 
    = frame.indexOf(">");
                        }
                        String frameUrl 
    = frame.substring(5, end - 1);
                        
    if (filter.accept(frameUrl)) {
                            links.add(frameUrl);
                        }
                    }
                }
            } 
    catch (ParserException e) {
                e.printStackTrace();
            }
            
    return links;
        }

        
    public void doParser(String url) {
            SohuNews news 
    = new SohuNews();
            Set
    <String> links = LinkParser.extracLinks(
                    url, 
    new LinkFilter() {
                
    //提取以 http://news.sohu.com 開頭的鏈接

                
    public boolean accept(String url) {
                    
    if (url.matches("http://news.sohu.com/[\\d]+/n[\\d]+.shtml")) {
                        
    return true;
                    } 
    else {
                        
    return false;
                    }
                }
            });
            
    //循環(huán)迭代出連接,然后提取該連接中的新聞。
            for (String link : links) {
                System.out.println(link);
                news.parser(link); 
    //解析連接
                
            }
        }

        
    //測試主頁新聞,可以得到主頁上所有符合要求的網(wǎng)頁地址,并進行訪問。
        public static void main(String[] args) {
            String url 
    = "http://news.sohu.com/";
            LinkParser parser 
    = new LinkParser();
            parser.doParser(url);

        }
    }

    上面這段帶碼比較簡單,就是用來提取 http://news.sohu.com  上面的新聞連接 ,格式類似這樣:http://news.sohu.com/20090518/n264012864.shtml
    所以寫了一小段的正則表達式來匹配他:
    Set<String> links = LinkParser.extracLinks(
                    url, 
    new LinkFilter() {
                
    //提取以 http://news.sohu.com 開頭的鏈接

                
    public boolean accept(String url) {
                    
    if (url.matches("http://news.sohu.com/[\\d]+/n[\\d]+.shtml")) {
                        
    return true;
                    } 
    else {
                        
    return false;
                    }
                }
            });

    還有一個核心類就是用來解析搜狐新聞的類,該類用于重網(wǎng)頁中提取出新聞,然后將新聞添加到數(shù)據(jù)庫中。代碼中還用到了一個NewsBean
    這段代碼就不貼出來了,很簡單的POJO 代碼。核心代碼都在下面。
    SohuNews.java
    import com.sohu.bean.NewsBean;
    import com.sohu.db.ConnectionManager;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import org.htmlparser.NodeFilter;
    import org.htmlparser.Parser;
    import org.htmlparser.beans.StringBean;
    import org.htmlparser.filters.AndFilter;
    import org.htmlparser.filters.HasAttributeFilter;
    import org.htmlparser.filters.TagNameFilter;
    import org.htmlparser.tags.Div;
    import org.htmlparser.tags.HeadingTag;
    import org.htmlparser.tags.Span;
    import org.htmlparser.util.NodeList;
    import org.htmlparser.util.ParserException;

    import java.sql.PreparedStatement;
    import java.sql.SQLException;

    /**
     * 用于對搜狐網(wǎng)站上的新聞進行抓取
     * 
    @author guanminglin <guanminglin@gmail.com>
     
    */
    public class SohuNews {

        
    private Parser parser = null;   //用于分析網(wǎng)頁的分析器。
        private List newsList = new ArrayList();    //暫存新聞的List;
        private NewsBean bean = new NewsBean();
        
    private ConnectionManager manager = null;    //數(shù)據(jù)庫連接管理器。
        private PreparedStatement pstmt = null;

        
    public SohuNews() {
        }

        
    /**
         * 獲得一條完整的新聞。
         * 
    @param newsBean
         * 
    @return
         
    */
        
    public List getNewsList(final NewsBean newsBean) {
            List list 
    = new ArrayList();
            String newstitle 
    = newsBean.getNewsTitle();
            String newsauthor 
    = newsBean.getNewsAuthor();
            String newscontent 
    = newsBean.getNewsContent();
            String newsdate 
    = newsBean.getNewsDate();
            list.add(newstitle);
            list.add(newsauthor);
            list.add(newscontent);
            list.add(newsdate);
            
    return list;
        }

        
    /**
         *  設(shè)置新聞對象,讓新聞對象里有新聞數(shù)據(jù)
         * 
    @param newsTitle 新聞標題
         * 
    @param newsauthor  新聞作者
         * 
    @param newsContent 新聞內(nèi)容
         * 
    @param newsDate  新聞日期
         * 
    @param url  新聞鏈接
         
    */
        
    public void setNews(String newsTitle, String newsauthor, String newsContent, String newsDate, String url) {
            bean.setNewsTitle(newsTitle);
            bean.setNewsAuthor(newsauthor);
            bean.setNewsContent(newsContent);
            bean.setNewsDate(newsDate);
            bean.setNewsURL(url);
        }

        
    /**
         * 該方法用于將新聞添加到數(shù)據(jù)庫中。
         
    */
        
    protected void newsToDataBase() {

            
    //建立一個線程用來執(zhí)行將新聞插入到數(shù)據(jù)庫中。
            Thread thread = new Thread(new Runnable() {

                
    public void run() {
                    
    boolean sucess = saveToDB(bean);
                    
    if (sucess != false) {
                        System.out.println(
    "插入數(shù)據(jù)失敗");
                    }
                }
            });
            thread.start();
        }

        
    /**
         * 將新聞插入到數(shù)據(jù)庫中
         * 
    @param bean
         * 
    @return
         
    */
        
    public boolean saveToDB(NewsBean bean) {
            
    boolean flag = true;
            String sql 
    = "insert into news(newstitle,newsauthor,newscontent,newsurl,newsdate) values(?,?,?,?,?)";
            manager 
    = new ConnectionManager();
            String titleLength 
    = bean.getNewsTitle();
            
    if (titleLength.length() > 60) {  //標題太長的新聞不要。
                return flag;
            }
            
    try {
                pstmt 
    = manager.getConnection().prepareStatement(sql);
                pstmt.setString(
    1, bean.getNewsTitle());
                pstmt.setString(
    2, bean.getNewsAuthor());
                pstmt.setString(
    3, bean.getNewsContent());
                pstmt.setString(
    4, bean.getNewsURL());
                pstmt.setString(
    5, bean.getNewsDate());
                flag 
    = pstmt.execute();

            } 
    catch (SQLException ex) {
                Logger.getLogger(SohuNews.
    class.getName()).log(Level.SEVERE, null, ex);
            } 
    finally {
                
    try {
                    pstmt.close();
                    manager.close();
                } 
    catch (SQLException ex) {
                    Logger.getLogger(SohuNews.
    class.getName()).log(Level.SEVERE, null, ex);
                }

            }
            
    return flag;
        }

        
    /**
         * 獲得新聞的標題
         * 
    @param titleFilter
         * 
    @param parser
         * 
    @return
         
    */
        
    private String getTitle(NodeFilter titleFilter, Parser parser) {
            String titleName 
    = "";
            
    try {

                NodeList titleNodeList 
    = (NodeList) parser.parse(titleFilter);
                
    for (int i = 0; i < titleNodeList.size(); i++) {
                    HeadingTag title 
    = (HeadingTag) titleNodeList.elementAt(i);
                    titleName 
    = title.getStringText();
                }

            } 
    catch (ParserException ex) {
                Logger.getLogger(SohuNews.
    class.getName()).log(Level.SEVERE, null, ex);
            }
            
    return titleName;
        }

        
    /**
         * 獲得新聞的責(zé)任編輯,也就是作者。
         * 
    @param newsauthorFilter
         * 
    @param parser
         * 
    @return
         
    */
        
    private String getNewsAuthor(NodeFilter newsauthorFilter, Parser parser) {
            String newsAuthor 
    = "";
            
    try {
                NodeList authorList 
    = (NodeList) parser.parse(newsauthorFilter);
                
    for (int i = 0; i < authorList.size(); i++) {
                    Div authorSpan 
    = (Div) authorList.elementAt(i);
                    newsAuthor 
    = authorSpan.getStringText();
                }

            } 
    catch (ParserException ex) {
                Logger.getLogger(SohuNews.
    class.getName()).log(Level.SEVERE, null, ex);
            }
            
    return newsAuthor;

        }

        
    /*
         * 獲得新聞的日期
         
    */
        
    private String getNewsDate(NodeFilter dateFilter, Parser parser) {
            String newsDate 
    = null;
            
    try {
                NodeList dateList 
    = (NodeList) parser.parse(dateFilter);
                
    for (int i = 0; i < dateList.size(); i++) {
                    Span dateTag 
    = (Span) dateList.elementAt(i);
                    newsDate 
    = dateTag.getStringText();
                }
            } 
    catch (ParserException ex) {
                Logger.getLogger(SohuNews.
    class.getName()).log(Level.SEVERE, null, ex);
            }

            
    return newsDate;
        }

        
    /**
         * 獲取新聞的內(nèi)容
         * 
    @param newsContentFilter
         * 
    @param parser
         * 
    @return  content 新聞內(nèi)容
         
    */
        
    private String getNewsContent(NodeFilter newsContentFilter, Parser parser) {
            String content 
    = null;
            StringBuilder builder 
    = new StringBuilder();


            
    try {
                NodeList newsContentList 
    = (NodeList) parser.parse(newsContentFilter);
                
    for (int i = 0; i < newsContentList.size(); i++) {
                    Div newsContenTag 
    = (Div) newsContentList.elementAt(i);
                    builder 
    = builder.append(newsContenTag.getStringText());
                }
                content 
    = builder.toString();  //轉(zhuǎn)換為String 類型。
                if (content != null) {
                    parser.reset();
                    parser 
    = Parser.createParser(content, "gb2312");
                    StringBean sb 
    = new StringBean();
                    sb.setCollapse(
    true);
                    parser.visitAllNodesWith(sb);
                    content 
    = sb.getStrings();
    //                String s = "\";} else{ document.getElementById('TurnAD444').innerHTML = \"\";} } showTurnAD444(intTurnAD444); }catch(e){}";
                   
                    content 
    = content.replaceAll("\\\".*[a-z].*\\}""");
                 
                    content 
    = content.replace("[我來說兩句]""");


                } 
    else {
                   System.out.println(
    "沒有得到新聞內(nèi)容!");
                }

            } 
    catch (ParserException ex) {
                Logger.getLogger(SohuNews.
    class.getName()).log(Level.SEVERE, null, ex);
            }

            
    return content;
        }

        
    /**
         * 根據(jù)提供的URL,獲取此URL對應(yīng)網(wǎng)頁所有的純文本信息,次方法得到的信息不是很純,
         *常常會得到我們不想要的數(shù)據(jù)。不過如果你只是想得到某個URL 里的所有純文本信息,該方法還是很好用的。
         * 
    @param url 提供的URL鏈接
         * 
    @return RL對應(yīng)網(wǎng)頁的純文本信息
         * 
    @throws ParserException
         * 
    @deprecated 該方法被 getNewsContent()替代。
         
    */
        @Deprecated
        
    public String getText(String url) throws ParserException {
            StringBean sb 
    = new StringBean();

            
    //設(shè)置不需要得到頁面所包含的鏈接信息
            sb.setLinks(false);
            
    //設(shè)置將不間斷空格由正規(guī)空格所替代
            sb.setReplaceNonBreakingSpaces(true);
            
    //設(shè)置將一序列空格由一個單一空格所代替
            sb.setCollapse(true);
            
    //傳入要解析的URL
            sb.setURL(url);

            
    //返回解析后的網(wǎng)頁純文本信息
            return sb.getStrings();
        }

        
    /**
         * 對新聞URL進行解析提取新聞,同時將新聞插入到數(shù)據(jù)庫中。
         * 
    @param content
         
    */
        
    public void parser(String url) {
            
    try {
                parser 
    = new Parser(url);
                NodeFilter titleFilter 
    = new TagNameFilter("h1");
                NodeFilter contentFilter 
    = new AndFilter(new TagNameFilter("div"), new HasAttributeFilter("id""sohu_content"));
                NodeFilter newsdateFilter 
    = new AndFilter(new TagNameFilter("span"), new HasAttributeFilter("class""c"));
                NodeFilter newsauthorFilter 
    = new AndFilter(new TagNameFilter("div"), new HasAttributeFilter("class""editUsr"));
                String newsTitle 
    = getTitle(titleFilter, parser);
                parser.reset();   
    //記得每次用完parser后,要重置一次parser。要不然就得不到我們想要的內(nèi)容了。
                String newsContent = getNewsContent(contentFilter, parser);
                System.out.println(newsContent);   
    //輸出新聞的內(nèi)容,查看是否符合要求
                parser.reset();
                String newsDate 
    = getNewsDate(newsdateFilter, parser);
                parser.reset();
                String newsauthor 
    = getNewsAuthor(newsauthorFilter, parser);

                
    //先設(shè)置新聞對象,讓新聞對象里有新聞內(nèi)容。
                setN             ews(newsTitle, newsauthor, newsContent, newsDate, url);
    //將新聞添加到數(shù)據(jù)中。
                this.newsToDataBase();
                
            } 
    catch (ParserException ex) {
                Logger.getLogger(SohuNews.
    class.getName()).log(Level.SEVERE, null, ex);
            }
        }

        
    //單個文件測試網(wǎng)頁
        public static void main(String[] args) {
            SohuNews news 
    = new SohuNews();
            news.parser(
    "http://news.sohu.com/20090518/n264012864.shtml");   
        }
    }

    存放新聞的數(shù)據(jù)庫用的是MySql 建表語句如下:(其實不用數(shù)據(jù)庫也可以的,在SohuNews類中注釋掉那行紅色的代碼就可以了,所有得到的新聞都會在后臺打印的。)

    CREATE DATABASE IF NOT EXISTS sohunews;
    USE sohunews;

    --
    --
     Definition of table `news`
    --

    DROP TABLE IF EXISTS `news`;
    CREATE TABLE `news` (
      `newsid` 
    int(11NOT NULL auto_increment,
      `newstitle` 
    varchar(60NOT NULL,
      `newsauthor` 
    varchar(20NOT NULL,
      `newscontent` 
    text NOT NULL,
      `newsurl` 
    char(130NOT NULL,
      `newsdate` 
    varchar(24NOT NULL,
      
    PRIMARY KEY  (`newsid`)
    ) ENGINE
    =InnoDB  DEFAULT CHARSET=utf8;

    以上的代碼寫的很粗糙,項目中使用到了HtmlParser工具包,如果需要可以到http://sourceforge.net/projects/htmlparser 網(wǎng)站上下載。如果有需要這個

    這篇文章只是一篇拋磚引玉的文章,希望懂爬蟲的你能夠給點意見,大家交流交流!!

    項目源代碼SohuNews



    評論

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-20 13:35 by andyelvis
    能否將這個爬蟲項目的源碼發(fā)給我學(xué)習(xí)學(xué)習(xí)?我的email是mrjiangyun@gmail.com。謝謝了!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-20 14:57 by 小饒
    能否將這個爬蟲項目的源碼發(fā)給我學(xué)習(xí)?maikelsong@163.com。謝謝了!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-20 17:30 by 咖啡@可樂
    能否將這個爬蟲項目的源碼發(fā)給我學(xué)習(xí)?anzn20@163.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-20 17:45 by 高人啊
    高人,jerryhu2002@163.com,非常感謝

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-20 17:54 by 中原
    大哥,soade@foxmail.com,謝謝!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-20 18:06 by kalman03
    能否發(fā)一份到kalman03@163.com,謝謝

    # re: 用HtmlParser 寫個簡單的 news爬蟲[未登錄]  回復(fù)  更多評論   

    2009-05-20 19:55 by wayne
    也發(fā)我一份 junjun231953@163.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 08:49 by QQ2009
    老兄給我一份啊,學(xué)習(xí)了!
    unwm@tom.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 08:51 by 用HtmlParser 寫個簡單的 news爬蟲
    謝謝!xhfptu@126.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 08:57 by cjf
    能否也經(jīng)我一份啊——abc_cjf@126.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 09:09 by wangyuqiang
    也給我發(fā)一份,謝謝!wangcll@yeah.net

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 09:29 by sea2009
    麻煩大哥給我發(fā)一份,謝謝2000_sea@163.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲[未登錄]  回復(fù)  更多評論   

    2009-05-21 09:52 by june

    大哥,寫很不錯,能否把這個爬蟲項目的源碼發(fā)給我學(xué)習(xí)?
    本人的郵箱是:125_feiying@163.com
    謝謝!

    # re: 用HtmlParser 寫個簡單的 news爬蟲[未登錄]  回復(fù)  更多評論   

    2009-05-21 10:48 by jerry
    能否將這個爬蟲項目的源碼發(fā)給我學(xué)習(xí)學(xué)習(xí)?我的email是yanbeifei168@163.com。謝謝了!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 11:01 by 日月雨林@gmail.com
    朋友們,項目源碼已近發(fā)送到你們的郵箱當(dāng)中了。請注意查收!!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 11:08 by mao
    3100949@qq.com
    能否把這個爬蟲項目的源碼發(fā)給我學(xué)習(xí)?

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 11:09 by nmgmax
    謝謝!nmgmax@126.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 11:29 by seesea
    謝謝weishugui@gmail.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲[未登錄]  回復(fù)  更多評論   

    2009-05-21 11:40 by yang
    Thank you !!!

    yxxcrtd@qq.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 11:46 by 日月雨林@gmail.com
    @mao
    @nmgmax
    @seesea
    @yang
    項目源碼已近發(fā)送到你們的郵箱當(dāng)中了。請注意查收!!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 12:23 by RainYuan
    yuanyuan110.l@gmail.com
    能否把這個爬蟲項目的源碼發(fā)給我學(xué)習(xí)?

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 13:05 by liuze
    老兄,能否給我發(fā)一份爬蟲代碼嗎?我的郵箱:liuze@msn.com,謝謝了!

    # re: 用HtmlParser 寫個簡單的 news爬蟲[未登錄]  回復(fù)  更多評論   

    2009-05-21 13:06 by yang
    已經(jīng)收到,謝謝!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 13:11 by yuhao
    大哥,也給我發(fā)一份吧:
    helloyuhao@gmail.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 13:15 by 幽界幻想
    大哥,給一份吧
    lovellj2002@163.com

    先謝謝了.

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 15:40 by 油荒
    給小弟也發(fā)一份吧、
    formulawang@yahoo.com.cn
    先謝過了

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 15:45 by 路過的小蝦
    我也想要一份,jiao_bo21@sina.com,謝謝老兄!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 16:06 by liu0909
    謝謝了,liu_0909@163.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-21 17:36 by jefyjiang
    jefyjiang@hotmail.com發(fā)我一份學(xué)習(xí)一下,謝謝

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 10:36 by first_learner
    tomcat@yeah.net
    謝謝

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 14:41 by ccbobo
    ccbobocat@gmail.com
    謝謝

    # re: 用HtmlParser 寫個簡單的 news爬蟲[未登錄]  回復(fù)  更多評論   

    2009-05-22 15:45 by lala
    寫的不錯,希望老兄可以的話,能夠發(fā)一份給我,
    一直想研究爬蟲呢,真是懶啊,O(∩_∩)O哈哈~
    guofangjia@shdv.com
    謝謝了

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 16:19 by ゞ沉默是金ゞ
    bhdxyjg@126.com,謝謝了!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 16:26 by 日月雨林@gmail.com
    @lala
    大家共同交流!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 17:36 by 藏獒價格
    hai126@qq.com,我也想和大家交流哦..呵呵.

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 17:37 by 新開傳世私服
    老兄,能否給我發(fā)一份爬蟲代碼嗎?我的郵箱:lzhangq@msn.com,謝謝了!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 17:38 by 傳世私服
    我也想要一份...123qq321@qq.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 17:39 by 魔獸世界私服
    我可以要一份嗎?182407555@qq.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 17:40 by 魔獸私服
    9755425202qq.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-22 20:25 by 一個任
    想研究下,麻煩樓主 發(fā)份給我。謝謝。
    huadiaoyue@yahoo.cn

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-23 11:14 by 日月雨林@gmail.com
    @新開傳世私服
    @傳世私服
    @魔獸私服
    請檢查你們地址是否真確,你們的郵件發(fā)送不了!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-23 22:23 by gengqkun
    想用一下這個爬蟲,gengqkun@yahoo.com.cn.
    多謝!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-24 20:13 by 不錯不錯
    多謝多謝,請順道發(fā)我一份pcccit@qq.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-24 23:35 by java_faver
    想學(xué)習(xí)下這個爬蟲,496172717@qq.com
    謝謝!

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-25 00:16 by huagongxuezi
    也想看看這個。可否給我也發(fā)一份。zweihust@gmail.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-25 09:57 by pwp
    我也想要一份源碼 謝謝!
    fspwp0730@gmail.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-25 10:25 by 百年樹人
    同上,0_7734@163.com,謝謝~

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-25 12:10 by 打工妹
    謝謝了
    zeng_yixing@163.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-25 14:50 by wszcx
    謝謝了,我的郵箱是: wszcxli@gmail.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-25 21:45 by Love_JAVA
    很不錯啊,想學(xué)習(xí)學(xué)習(xí),謝謝了!
    397655387@qq.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-26 05:09 by 孫程
    給我也弄一份學(xué)習(xí)學(xué)習(xí)吧.
    gensun.cc@gmail.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-26 14:23 by 南京的胖子
    給我一個啊 我來學(xué)習(xí)一下
    route_wu@hotmail.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-28 12:07 by Raf.
    哇 您好厲害哦
    看到他們都在索要這個項目,
    我可不可以也能得到一些榮幸呢?
    kenlhb@gmail.com
    謝謝

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-05-30 21:39 by kan
    也想看看這個。可否給我也發(fā)一份。你太牛了 崇拜 謝謝 kzq87@163.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-06-01 01:04 by kobe
    最近在學(xué)這個,因為要做課程設(shè)計,所以懇請樓主也發(fā)我一份,萬分感謝~
    bumengxin@126.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-06-04 00:30 by coolzw
    能不能發(fā)把項目代碼發(fā)到我的郵箱:
    jiangzhw2008#yeah.net (#換為@)
    謝謝。

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-06-08 19:46 by appT
    同求rar.zip.7z@gmail.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲[未登錄]  回復(fù)  更多評論   

    2009-06-10 12:29 by phil
    最近在學(xué)這個,所以懇請樓主也發(fā)我一份,萬分感謝~
    phil1233@126.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-06-10 17:38 by wer
    能不能發(fā)把項目代碼發(fā)到我的郵箱:
    jtrwl@126.com
    謝謝。

    # re: 用HtmlParser 寫個簡單的 news爬蟲[未登錄]  回復(fù)  更多評論   

    2009-06-11 13:44 by 小生
    兄弟,也發(fā)一份吧!
    pan19849529@126.com

    # re: 用HtmlParser 寫個簡單的 news爬蟲  回復(fù)  更多評論   

    2009-10-20 11:24 by 火焰出林
    麻煩樓主給我發(fā)份,謝謝
    Email:blameswood@hotmail.com
    主站蜘蛛池模板: 久久久久亚洲AV片无码下载蜜桃| 色窝窝亚洲av网| 精品国产精品久久一区免费式| 美女被免费视频网站a| 久久亚洲国产精品一区二区| 114级毛片免费观看| 国产精品日本亚洲777| 亚洲∧v久久久无码精品| 日本视频免费在线| 亚洲免费视频网站| 国产成人精品日本亚洲语音 | 国产性生大片免费观看性| 亚洲麻豆精品果冻传媒| 免费乱理伦在线播放| 在线日本高清免费不卡| 乱爱性全过程免费视频| 亚洲精品午夜国产va久久| 亚洲国产另类久久久精品小说 | 最近2019中文字幕mv免费看| 黄色网址免费在线观看| 在线观看日本亚洲一区| 亚洲第一区香蕉_国产a| 亚洲XX00视频| 最近2019中文字幕mv免费看| 三年片在线观看免费大全电影| 免费无码又爽又黄又刺激网站| 亚洲一区二区三区久久| 久久久久久亚洲精品| 亚洲精品一级无码鲁丝片| 免费黄色小视频网站| 国产精品色拉拉免费看| 久久精品无码精品免费专区| 深夜a级毛片免费无码| 亚洲一级免费毛片| 亚洲欧洲在线观看| 亚洲国产精品无码久久久不卡| 国产做床爱无遮挡免费视频| 欧美男同gv免费网站观看| 69免费视频大片| 日韩免费在线观看视频| 久久久久久久久久免免费精品 |