最近开始学一下c#编写爬虫,发现了一个很好的视频资源,然后就在学习之余,做一些笔记。
视频资源链接:https://www.bilibili.com/video/av11424797/?spm_id_from=333.788.videocard.1
第一个小例子,使用net来进行网站源码的读取,其中的各项数据都是可以通过谷歌浏览器的开发工具按钮中的network得到。
class Program
{
static void Main(string[] args)
{
//建立一个请求
string Url = "https://baike.baidu.com/item/using/232450";
HttpWebRequest Myrq = WebRequest.Create(Url) as HttpWebRequest;
Myrq.KeepAlive = false;//持续连接
Myrq.Timeout = 30 * 1000;//30秒,*1000是因为基础单位为毫秒
Myrq.Method = "GET";//请求方法
Myrq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3";//自己去network里面找
Myrq.Host = "baike.baidu.com";
Myrq.Referer = "https://www.baidu.com/link?url=4kZCAq87BmnGJcjYDZnn7vaR2N1Zyd3zXzbUlHrb1Vi9jTWf1wsN4mJixYl4bQuHUaxxPOpzUDvfx21TRtSySK&wd=&eqid=c571cf7b000fc0d5000000055d2004e3";
Myrq.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36";
//接受返回
HttpWebResponse Myrp = (HttpWebResponse )Myrq.GetResponse();
if(Myrp.StatusCode !=HttpStatusCode.OK )
{ return; }
using (StreamReader rd = new StreamReader(Myrp.GetResponseStream()))
{
Console.WriteLine(rd.ReadToEnd() );
}
Console.ReadKey();
输出如下:
network中的第一个就是该网站的请求头等 。
下面的这些图片请与代码结合着来看
第二个小例子,开始爬取图片了,这个url是作者随便找的一个网站的图片的请求头,
你们也可以自己换一下。
//建立一个请求
string Url = "http://pic.netbian.com/uploads/allimg/190630/215651-1561903011838a.jpg";
HttpWebRequest Myrq = WebRequest.Create(Url) as HttpWebRequest;
Myrq.KeepAlive = false;//持续连接
Myrq.Timeout = 30 * 1000;//30秒,*1000是因为基础单位为毫秒
Myrq.Method = "GET";//请求方法
Myrq.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3";//自己去network里面找
Myrq.UserAgent = "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36";
//接受返回
HttpWebResponse Myrp = (HttpWebResponse )Myrq.GetResponse();
if(Myrp.StatusCode !=HttpStatusCode.OK )
{ return; }
using (FileStream fl = new FileStream("1.jpg", FileMode.Create))//展开一个流
{
Myrp.GetResponseStream().CopyTo(fl);//复制到当前文件夹
}
我们可以看到其实两块代码差别并不大,其中只有很小的差别。