爬取HTML 某標簽內容


最近不怎么忙,抽空了解了一下爬蟲。零零散散的百度閱讀相關資料,對爬蟲有一點點小了解。做一下筆記。放個demo希望對感興趣的小伙伴有拋磚引玉的作用。
按個人目前的理解,爬蟲,就是對某個網頁的HTML文件爬取某標簽的內容,說白了就是獲取目標網站的html,然后解析想獲取標簽,再取對應想要的值(可以是a標簽的href可以是img的src,div的text等等屬性值)
才學淺薄,如有不足之處請大佬指指點點

本案例以起點小說為例子(涉及知識僅供學習,不可瞎搞)

確定目標及分析:

第一步確定目標網站 https://read.qidian.com/chapter/ozgK2uJ6kuk1/_Ba1my_qLv_M5j8_3RRvhw2/

第二步確定自己想抓取的目標(這里抓取小說章節名稱,可看出目標所在html結構為:j_chapterName下的span標簽)

 

 

開擼:

1.先獲取目標網站的html結構

 /// <summary>
        /// 獲取目標HTML
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        private async Task<string> GetHTML(string url)
        {
            var re = WebRequest.Create(url) as HttpWebRequest;
            re.Method = "GET";
            var headers = new WebHeaderCollection();
            headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36");
            re.Headers = headers;
            re.AutomaticDecompression = DecompressionMethods.All;
            //  re.Timeout = 120;
            var ans = await re.GetResponseAsync();
            using (StreamReader sr = new StreamReader(ans.GetResponseStream()))
            {
                return sr.ReadToEnd();
            }
        }

2.解析html 通過QuerySelectorAll篩選出目標標簽對象

  

 /// <summary>
        /// 解析獲取目標對象list(如獲取div 里面classA里面所有的span標簽對象)
        /// </summary>
        /// <param name="html">解析目標</param>
        /// <param name="className">要獲取的選擇器地址如:div .classA span </param>
        /// <returns></returns>
        private static List<IElement> GetHtmlTag(string html, string className)
        {
            List<IElement> TagList = new List<IElement>();
            //解析
            var parser = new HtmlParser();
            var text = parser.ParseDocument(html);
            foreach (var item in text.QuerySelectorAll(className))
            {
                TagList.Add(item);
            }
            return TagList;
        }

3.根據標簽對象獲取對應屬性值

 var titlelist = GetHtmlTag(html.Result, classTitle);
 title = titlelist[0].TextContent;//這里標題只取一個 我們取第一個對象即可,如遇到取得不是目標值可調試查看對象對應屬性值

4.這樣就取到了章節名稱了
看看最終效果圖

 

 

 



demo

鏈接:https://pan.baidu.com/s/1v2Tbm-Q28qo3QJZkilb11w
提取碼:1234

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM