public class HttpControler
{
//post请求发送
private Encoding m_Encoding = Encoding.GetEncoding("gb2312");
public string Request(string strUrl,string postStr)
{
HttpWebRequest tHWRq = (HttpWebRequest)HttpWebRequest.Create(strUrl);
tHWRq.CookieContainer = new CookieContainer();
CookieContainer cookie = tHWRq.CookieContainer;//如果用不到Cookie,删去即可
//以下是发送的http头,随便加,其中referer挺重要的,有些网站会根据这个来反盗链
tHWRq.Referer = "http://www.cninfo.com.cn/cninfo-new/announcement/show";
tHWRq.Accept = "application/json, text/javascript, */*; q=0.01";
tHWRq.Headers["Accept-Language"] = "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3";
//tHWRq.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3";
tHWRq.Headers["Accept-Encoding"] = "gzip, deflate";
tHWRq.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0";
tHWRq.KeepAlive = true;
//上面的http头看情况而定,但是下面俩必须加
tHWRq.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
tHWRq.Method = "POST";
tHWRq.Timeout = * ; Encoding encoding = Encoding.UTF8;//根据网站的编码自定义 byte[] postData = encoding.GetBytes(postStr);//postDataStr即为发送的数据,格式还是和上次说的一样 try
{
tHWRq.ContentLength = postData.Length;
Stream requestStream = tHWRq.GetRequestStream();
requestStream.Write(postData, , postData.Length);
requestStream.Close();
using (HttpWebResponse tHWRp = (HttpWebResponse)tHWRq.GetResponse())
{
using (Stream tStreamRp = tHWRp.GetResponseStream())
{
using (StreamReader tSR = new StreamReader(tStreamRp, m_Encoding))
{
string result = tSR.ReadToEnd();
tHWRq.Abort();
return result;//请求响应后返回的内容
}
}
}
}
catch (Exception e)
{
try
{
tHWRq.Abort();
}
catch (Exception err)
{
throw err;
}
return "NoUrl";
} } //Get请求发送
public bool RequestCode(string strUrl,string path)
{
HttpWebRequest tHWRq = (HttpWebRequest)HttpWebRequest.Create(strUrl);
tHWRq.CookieContainer = new CookieContainer();
CookieContainer cookie = tHWRq.CookieContainer;//如果用不到Cookie,删去即可
//以下是发送的http头,随便加,其中referer挺重要的,有些网站会根据这个来反盗链
tHWRq.Referer = "http://www.cninfo.com.cn/cninfo-new/announcement/show";
tHWRq.Accept = "application/json, text/javascript, */*; q=0.01";
tHWRq.Headers["Accept-Language"] = "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3";
tHWRq.Headers["Accept-Charset"] = "GBK,utf-8;q=0.7,*;q=0.3";
tHWRq.UserAgent = "User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0";
tHWRq.KeepAlive = true;
//上面的http头看情况而定,但是下面俩必须加
tHWRq.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
tHWRq.Method = "GET";
tHWRq.Timeout = * ;
string result = null;
try
{
using (HttpWebResponse tHWRp = (HttpWebResponse)tHWRq.GetResponse())
{
using (Stream tStreamRp = tHWRp.GetResponseStream())
{
using (StreamReader tSR = new StreamReader(tStreamRp))
{
result = tSR.ReadToEnd();
}
}
}
//正则表达式过滤想要的内容
string patternCode = "\"code\":\"\\d{6,}\"";
List<string> lstCode = new List<string>();
Regex rgxUrl = new Regex(patternCode, RegexOptions.IgnoreCase);
MatchCollection matches = rgxUrl.Matches(result);
if (matches.Count > )
{
foreach (Match matPage in matches)
{
string codeItem = matPage.Value;
if (!string.IsNullOrEmpty(codeItem))
{
string code = codeItem.Substring(codeItem.IndexOf(":") + );
lstCode.Add(code);
}
}
} using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
foreach (string code in lstCode)
{
sw.WriteLine(code);
} }
}
tHWRq.Abort();
return true;
}
catch (Exception e)
{
try
{
tHWRq.Abort();
}
catch (Exception err)
{
throw err;
}
return false;
}
}
}

Web爬虫的C#请求发送的更多相关文章

  1. 第三百二十二节,web爬虫,requests请求

    第三百二十二节,web爬虫,requests请求 requests请求,就是用yhthon的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请 ...

  2. web爬虫,requests请求

    requests请求,就是用yhthon的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请求,一种是需要用户登录或者验证的请求 一.不需要用 ...

  3. 一 web爬虫,requests请求

    requests请求,就是用python的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请求,一种是需要用户登录或者验证的请求 一.不需要用 ...

  4. 1、web爬虫,requests请求

    requests请求,就是用python的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请求,一种是需要用户登录或者验证的请求 一.不需要用 ...

  5. 利用post请求发送内容进行爬虫

    利用post请求发送内容进行爬虫 import requests url = 'http://www.iqianyue.com/mypost' header = {} header['Accept-L ...

  6. 第三百二十七节,web爬虫讲解2—urllib库爬虫—基础使用—超时设置—自动模拟http请求

    第三百二十七节,web爬虫讲解2—urllib库爬虫 利用python系统自带的urllib库写简单爬虫 urlopen()获取一个URL的html源码read()读出html源码内容decode(& ...

  7. python爬虫---scrapy框架爬取图片,scrapy手动发送请求,发送post请求,提升爬取效率,请求传参(meta),五大核心组件,中间件

    # settings 配置 UA USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, l ...

  8. Web爬去的C#请求发送

    public class HttpControler { //post请求发送 private Encoding m_Encoding = Encoding.GetEncoding("gb2 ...

  9. 第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies

    第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录 模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于star ...

随机推荐

  1. C++中变量做数组长度

    在Java中,这是完全可以的,比如我们运行如下程序: package cn.darrenchan.storm; import java.util.Arrays; public class Test { ...

  2. asp.net 列表样式

    找了好一段时间,找到一个不错的文章列表样式,留起来备用 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  3. msyql的内存计算

    本文将讨论MySQL内存相关的一些选项,包括: 单位都是b,不是kb,即1B=1/(1024*1024*1024)G 1)全局的buffer,如innodb_buffer_pool_size: 2)线 ...

  4. jvm 调整tomcat的堆内存和常驻内存catalina.sh

    4.2 性能优化 tomcat性能取决于你的内存大小 上策:优化代码 中策:jvm优化机制  垃圾回收机制 把不需要的内存回收   优化jvm--优化垃圾回收策略 优化catalina.sh配置文件. ...

  5. ssh配置authorized_keys后仍然需要输入密码的问题

    前阵子搭建Hadoop时,配置了本机(localhost)的ssh的公钥到authorized_keys文件中,但是在ssh连接localhost时仍然提示需要输入密码,后来发现是$HOME/.ssh ...

  6. Easyui 编辑表格行删除

    1.问题描述 easyui 编辑表格新增一条数据后,删除最后一行删除不了,原因是没有提交数据acceptChanges. 源码中deleteRow方法,根据坐标获取行html,方法为opts.find ...

  7. php -- 判断文件是否存在

    file_exists is_file is_dir 基本上,PHP的 file_exists = is_dir + is_file 写程序验证一下: 分别执行1000次,记录所需时间. ------ ...

  8. xsocket:空闲超时问题。

    XSocket是什么? java的nio的封装. 详情: 1. http://xsocket.sourceforge.net/core/apidocs/2_1/index.html 2. http:/ ...

  9. php计算数组相同值出现次数的代码(array_count_values)

    php计算数组相同值出现次数,可以使用php自带函数array_count_values : 说明 array array_count_values ( array $input )array_cou ...

  10. Visual Studio Code调试node.js:无法在PATH上找到运行时的node

    首先,环境变量Path中加入nodejs的路径: 验证nodejs是否已经加入环境变量: 接着,重新启动Visual Studio Code, 试一下,是不是好了~   附录:Visual Studi ...