C#爬蟲基礎 分析網頁寫一個爬去網絡小說的程序(付完整代碼) 一,抓包工具的使用(以為例)
最常見的抓包工具就是 下面是下載地址
鏈接:
提取碼:skj2
打開之后 在網頁上打開網站就會在上顯示各種參數
二看小說不會被發現 網頁代碼軟件程序,分析網頁請求內容(以為例)
是一個小說網址 我們抓到他的請求
發現他是一個普通的GET請求我們直接通過GET請求就可以獲取到網頁數據
我們搜索一個小說以貞觀帝師為例
能夠看到只需要GET請求就可以 不帶和token也沒有反爬蟲機制
下面我們就可以開始寫代碼 直接獲取內容
三,開始抓取網頁內容
我們之間使用GET請求
然后配置和-參數就可以直接請求到網頁內容了
string html;
HttpWebRequest Web_Request = (HttpWebRequest)WebRequest.Create(url);
Web_Request.Timeout = 30000;
Web_Request.Method = "GET";
Web_Request.UserAgent = "Mozilla/4.0";
Web_Request.Headers.Add("Accept-Encoding", "gzip, deflate");
//Web_Request.Credentials = CredentialCache.DefaultCredentials;
//設置代理屬性WebProxy-------------------------------------------------
//WebProxy proxy = new WebProxy("111.13.7.120", 80);
在發起HTTP請求前將proxy賦值給HttpWebRequest的Proxy屬性
//Web_Request.Proxy = proxy;
HttpWebResponse Web_Response = (HttpWebResponse)Web_Request.GetResponse();
if (Web_Response.ContentEncoding.ToLower() == "gzip") // 如果使用了GZip則先解壓
{
using (Stream Stream_Receive = Web_Response.GetResponseStream())

{
using (var Zip_Stream = new GZipStream(Stream_Receive, CompressionMode.Decompress))
{
using (StreamReader Stream_Reader = new StreamReader(Zip_Stream, Encoding.Default))
{
html = Stream_Reader.ReadToEnd();
}
}
}
}
else
{
using (Stream Stream_Receive = Web_Response.GetResponseStream())
{
using (StreamReader Stream_Reader = new StreamReader(Stream_Receive, Encoding.Default))
{
html = Stream_Reader.ReadToEnd();

}
}
}
然后通過抓包我們可以發現他的每一張的名字和html是什么
然后我們通過正則表達式來講他們解析出來
string Novel_Name = Regex.Match(html, @"(?<=)([\S\s]*?)(?=
)").Value; //獲取書名
Regex Regex_Menu = new Regex(@"(?is)(?<="book_list"
">).+?(?=)");
string Result_Menu = Regex_Menu.Match(html).Value; //獲取列表內容
Regex Regex_List = new Regex("(?is)(?<=)" );
var Result_List = Regex_List.Matches(Result_Menu); //獲取列表集合
int i = 0; //計數
string Menu_Content = ""; //所有章節./

foreach (var x in Result_List)
{
Menu_Content += x.ToString();
i++;
}
Regex Regex_Href = new Regex(@"(?is)]*?href=(['""]?)(?[^'" "\s>]+)\1[^>]*>(?(?:(?!?a\b).)*)" );
MatchCollection Result_Match_List = Regex_Href.Matches(Menu_Content); //獲取href鏈接和a標簽 innerHTML
然后我們將獲取到的網頁保存在本地 注意文字保存的時候可能會出現亂碼情況這個時候需要轉義字符串
string Url_Text = Result_Single.Groups["url"].Value;
string Content_Text = Result_Single.Groups["text"].Value;
string Content_Html = HttpGet(Url_Txt.Text + Url_Text);//獲取內容頁
Regex Rege_Content = new Regex(@"(?is)(?<="Book_Text"
">).+?(?=)");
string Result_Content = Rege_Content.Match(Content_Html).Value; //獲取文章內容

Regex Regex_Main = new Regex(@"( )(.*)");
string Rsult_Main = Regex_Main.Match(Result_Content).Value; //正文
string Screen_Content = Rsult_Main.Replace(" ", "").Replace("
", "\r\n");
Content_Text = System.Text.RegularExpressions.Regex.Unescape(Content_Text); // 字符串轉意
Screen_Content = System.Text.RegularExpressions.Regex.Unescape(Screen_Content); //字符串轉意
Write_Content.WriteLine(Content_Text + "\r\n");//寫入標題
Write_Content.WriteLine(Screen_Content);//寫入內容
然后我們就可以在本地看到我們抓取下來的小說了
總結
爬蟲其實就是
分析網頁請求看小說不會被發現 網頁代碼軟件程序,獲取網頁內容,解析網頁內容這樣的一個流程。
通過此文章希望大家能夠更加了解爬蟲更加了解網頁請求機制,將這次爬蟲的心得運用在更多的地方。
下面是全部代碼下載地址: