C#---爬虫抓取系列
2024-08-25 08:47:36
以前就尝试过研究了一些爬虫程序,也找过一些爬虫抓取软件,效果不是很好。 今天正好一个培训的网友给了我一个视频,正好研究下,收获颇丰。感谢那位哥们~
1.首先讨论一下抓取一个页面
这里我写了模仿写了一个控制台程序,直接看代码即可:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text; namespace 爬虫
{
class Program
{
static void Main(string[] args)
{
string rec=getContent("http://ryj.shuai7boy.cn/");
Console.WriteLine(rec);
Console.ReadKey();
}
public static string getContent(string strUrl)
{
try
{
string rl;
Uri u = new Uri(strUrl);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(strUrl);
request.ContentType = "application/x-www-form-urlencoded";
HttpWebResponse Response = (HttpWebResponse)request.GetResponse();
Stream resStream = Response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, Encoding.GetEncoding("utf-8"));
StringBuilder sb = new StringBuilder();
while ((rl=sr.ReadLine())!=null)
{
sb.Append(rl);
}
return sb.ToString(); }
catch(Exception e)
{
Console.WriteLine("can't open url:"+strUrl);
throw e;
}
} } }
上面运行后就直接把网页的Html抓取到显示到控制台了。
这个的原理就是直接请求读取的文件流,然后对文件流进行一行一行遍历。
尝试过的朋友可能会对这个编码产生质疑。首先要说的是utf-8是国际标准,gb2312是针对汉语中国自己制定的。
如果像上面使用gb2312导出我们会看到乱码,但打开网页不会。 但当上面改为utf-8时,导出的内容我们能看懂,但打开网页就出现乱码了。这个时候解决办法就是手动将网页里面的utf-8改为gb2312。
至于这是什么原因?编码之间是怎么转换的我还没深入研究,后续讨论。
还可以将上面代码改为直接写入文件:
static void Main(string[] args)
{
string rec=getContent("http://www.baidu.com/");
string strPath = @"E:\c盘搬家\Desktop\1.html";
File.WriteAllText(strPath, rec);
Console.WriteLine("ok");
Console.ReadKey();
}
最新文章
- Fluent interface
- 菜单each+hover
- Linux下运行jar包
- Hadoop Resource
- hdu 4405 Aeroplane chess(简单概率dp 求期望)
- ubuntu下如何设置主机名
- Spring Security(16)——基于表达式的权限控制
- 在2017年,如何将你的小米4刷上Windows 10 mobile?
- 【请求之密】payload和formData有什么不同?
- C语言第三次博客作业---单层循环结构
- SpringMVC 环境搭建(HelloWorld)
- Codeforces Round #417 (Div. 2)-A. Sagheer and Crossroad
- java序列化和反序列化中的serialVersionUID有啥用
- C# 最齐全的上传图片方法
- 【转】android IDE——通过DDMS查看app运行时所占内存情况
- Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)
- [LeetCode] 295. Find Median from Data Stream ☆☆☆☆☆(数据流中获取中位数)
- Excel操作
- SQLServer2008只能编辑前面200行数据
- Project facet jst.web.jstl has not been defined.
热门文章
- 单元测试工具 unitils
- MongoDB(二)创建更新删除文档
- salt-master迁移
- print输出带颜色的方法详解
- JS 100元购物卡,牙刷5元,香皂2元、洗发水15元 100元正好花完有多少种可能
- php libevent扩展
- Eclipse maven工程 Missing artifact com.sun:tools:jar:1.7.0:system 解决方法
- vue组件通信,点击传值,动态传值(父传子,子传父)
- Elasticsearch 入门 - 安装、启动和配置
- 导出MNIST的数据集