http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 6797|回复: 8

[求助] 获取淘宝搜索页源代码问题,cookie如何传值?

[复制链接]
发表于 2019-4-27 16:35:54 | 显示全部楼层 |阅读模式
[C#] 纯文本查看 复制代码
private void button1_Click(object sender, EventArgs e)
        {
            Getcookie myget = new Getcookie();
            //richTextBox1.Text += myget.GetCookieString(textBox1.Text.Trim());
            richTextBox1.Text += Gethtml();
           // Hide();
        }
       
        public string Gethtml()
        {
            Getcookie myget = new Getcookie();
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "https://s.taobao.com/search?q=t恤男",//URL     必需项  
                Method = "GET",//URL     可选项 默认为Get  
                Timeout = 100000,//连接超时时间     可选项默认为100000  
                ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000  
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写  
                Cookie = myget.GetCookieString("https://login.taobao.com/member/login.jhtml?"),//字符串Cookie     可选项  
                UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",//用户的浏览器类型,版本,操作系统     可选项有默认值  
                Accept = "text/html, application/xhtml+xml, */*",//    可选项有默认值  
                ContentType = "text/html",//返回类型    可选项有默认值  
                Referer = "",//来源URL     可选项                  
                Postdata = "",//Post数据     可选项GET时不需要写  
                              //ProxyIp = "192.168.1.105:2020",//代理服务器ID     可选项 不需要代理 时可以不设置这三个参数  
                              //ProxyPwd = "123456",//代理服务器密码     可选项  
                              //ProxyUserName = "administrator",//代理服务器账户名     可选项  
                ResultType = ResultType.String,//返回数据类型,是Byte还是String  
            };
            HttpResult result = http.GetHtml(item);
            string html = result.Html;
            return html;

        }

这样写怎么获取不到HTML,原因在cookie那,这值怎么传入啊?
我是用webbrowser登录获取的cookie。
还有这个万能框架和免费的HttpHelper爬虫类有什么区别,用在我这个项目上好像没什么区别吧?
刚学C#几天啊,请求指教。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2019-4-27 16:49:14 | 显示全部楼层
w在同一个项目的同一个窗口下才能这样获取,否则可以传值 ,或者存储起那,在用的地方读取
 楼主| 发表于 2019-4-27 16:52:48 | 显示全部楼层
[C#] 纯文本查看 复制代码
myget.GetCookieString(textBox1.Text.Trim());

这个方法是可以获取到cookie的,然后这么穿入W了,你说的我还是有点不理解,
 楼主| 发表于 2019-4-27 16:56:15 | 显示全部楼层
站长苏飞 发表于 2019-4-27 16:49
w在同一个项目的同一个窗口下才能这样获取,否则可以传值 ,或者存储起那,在用的地方读取

[C#] 纯文本查看 复制代码
 private void button1_Click(object sender, EventArgs e)
        {
            Getcookie myget = new Getcookie();
            //richTextBox1.Text += myget.GetCookieString(textBox1.Text.Trim());
            richTextBox1.Text += Gethtml();
           // Hide();
        }
       
        public string Gethtml()
        {
            Getcookie myget = new Getcookie();
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "https://s.taobao.com/search?q=t恤男",//URL     必需项  
                Method = "GET",//URL     可选项 默认为Get  
                Timeout = 100000,//连接超时时间     可选项默认为100000  
                ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000  
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写  
                Cookie = myget.GetCookieString(textBox1.Text.Trim()),//字符串Cookie     可选项  
                UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",//用户的浏览器类型,版本,操作系统     可选项有默认值  
                Accept = "text/html, application/xhtml+xml, */*",//    可选项有默认值  
                ContentType = "text/html",//返回类型    可选项有默认值  
                Referer = "",//来源URL     可选项                  
                Postdata = "",//Post数据     可选项GET时不需要写  
                              //ProxyIp = "192.168.1.105:2020",//代理服务器ID     可选项 不需要代理 时可以不设置这三个参数  
                              //ProxyPwd = "123456",//代理服务器密码     可选项  
                              //ProxyUserName = "administrator",//代理服务器账户名     可选项  
                ResultType = ResultType.String,//返回数据类型,是Byte还是String  
            };
            HttpResult result = http.GetHtml(item);
            string html = result.Html;
            return html;

        }

本来是这样写的,但是这样也获取不到HTML,这个cookie不能用表达式传入吗?
 楼主| 发表于 2019-4-27 17:01:44 | 显示全部楼层
站长苏飞 发表于 2019-4-27 16:49
w在同一个项目的同一个窗口下才能这样获取,否则可以传值 ,或者存储起那,在用的地方读取

[C#] 纯文本查看 复制代码
 private void button1_Click(object sender, EventArgs e)
        {
            Getcookie myget = new Getcookie();
            //richTextBox1.Text += myget.GetCookieString(textBox1.Text.Trim());
            richTextBox1.Text += Gethtml();
           // Hide();
        }
       
        public string Gethtml()
        {
            Getcookie myget = new Getcookie();
            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = "https://s.taobao.com/search?q=t恤男",//URL     必需项  
                Method = "GET",//URL     可选项 默认为Get  
                Timeout = 100000,//连接超时时间     可选项默认为100000  
                ReadWriteTimeout = 30000,//写入Post数据超时时间     可选项默认为30000  
                IsToLower = false,//得到的HTML代码是否转成小写     可选项默认转小写  
                Cookie =" t = 57beb9b27b0d36dcf80c0bc9e505ae7b; cna = UCBDFd4lBFUCARsd3N3Mm2wQ; tg = 0; thw = cn; enc = 0omffYHF9R % 2B0wxG3PVgDbhJmqFaGzILYpcirgK1MRSkDEMIuZi3z21txnYWnBpjGSoTp0LTAbvZQ901 % 2F3nwmqQ % 3D % 3D; hng = CN % 7Czh - CN % 7CCNY % 7C156; _m_h5_tk = c8988930e7681ef2ad533a23acbb6d07_1556083076495; _m_h5_tk_enc = 26a082bd7ca949a1cd1c841ac3e52b03; tracknick =% 5Cu5929 % 5Cu610F188881; lgc =% 5Cu5929 % 5Cu610F188881; mt = ci = 58_1 & np =; v = 0; cookie2 = 5596aca4d385821d90b5f117673c6713; _tb_token_ = ee13e0e3beeb8; _mw_us_time_ = 1556355518629; unb = 369109889; uc1 = cookie16 = W5iHLLyFPlMGbLDwA % 2BdvAGZqLg % 3D % 3D & cookie21 = VFC % 2FuZ9ajCbF8 % 2BYOUZmuyA % 3D % 3D & cookie15 = WqG3DMC9VAQiUQ % 3D % 3D & existShop = true & pas = 0 & cookie14 = UoTZ4tAvVRYbTg % 3D % 3D & tag = 8 & lng = zh_CN; sg = 199; _l_g_ = Ug % 3D % 3D; skt = 69d94d3ee4b92dcc; cookie1 = Vvj6Rp % 2Bf5UYX4SVumR8mjQDHchRapVf1FvRSEietIis % 3D; csg = d8c148c8; uc3 = vt3 = F8dByEfCF6F03h05Tsc % 3D & id2 = UNaOmmIt6gkb & nk2 = r7k0NKNDgNMyIg % 3D % 3D & lg2 = U % 2BGCWk % 2F75gdr5Q % 3D % 3D; existShop = MTU1NjM1NTUyMA % 3D % 3D; _cc_ = UIHiLt3xSw % 3D % 3D; dnk =% 5Cu5929 % 5Cu610F188881; _nk_ =% 5Cu5929 % 5Cu610F188881; cookie17 = UNaOmmIt6gkb; l = bBxJAjC4vlre - JytBOCanurza77OSIRYYuPzaNbMi_5dp6T_D87OlQpI5F96Vj5R_TYB4keiqTJ9 - etkZ; isg = BM_PEIYAzwK0zMsG40uvEmIPXmMZXCFwrH8zj - Hcaz5FsO - y6cSzZs2itqCryPuO",//字符串Cookie     可选项  
                UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36",//用户的浏览器类型,版本,操作系统     可选项有默认值  
                Accept = "text/html, application/xhtml+xml, */*",//    可选项有默认值  
                ContentType = "text/html",//返回类型    可选项有默认值  
                Referer = "",//来源URL     可选项                  
                Postdata = "",//Post数据     可选项GET时不需要写  
                              //ProxyIp = "192.168.1.105:2020",//代理服务器ID     可选项 不需要代理 时可以不设置这三个参数  
                              //ProxyPwd = "123456",//代理服务器密码     可选项  
                              //ProxyUserName = "administrator",//代理服务器账户名     可选项  
                ResultType = ResultType.String,//返回数据类型,是Byte还是String  
            };
            HttpResult result = http.GetHtml(item);
            string html = result.Html;
            return html;

        }

这样手动填入cookie才可以获取到,老师,是我那里没弄懂吗?怎么不能用表达式了?
发表于 2019-4-27 17:05:52 | 显示全部楼层
  Cookie = textBox1.Text.Trim(),//字符串Cookie     可选项  
 楼主| 发表于 2019-4-27 17:15:37 | 显示全部楼层
站长苏飞 发表于 2019-4-27 17:05
Cookie = textBox1.Text.Trim(),//字符串Cookie     可选项

意思这个地方可以用表达式,只是我写错了?但是你这样写也获取不到HTML啊,myget.GetCookieString(textBox1.Text.Trim());这个表达式就是cookie,它的值和我手动获取的一样,但是不知道怎么就不行。
 楼主| 发表于 2019-4-28 12:08:58 | 显示全部楼层
问题解决了,但是可能方法有些笨,就是在一个类中获取登录后的cookie然后写入本地的TXT文件中,再在需要的地方读取这个TXT文件,菜鸟的行为大师们是不是无法理解。
发表于 2019-5-5 10:39:35 | 显示全部楼层
pigwhy 发表于 2019-4-28 12:08
问题解决了,但是可能方法有些笨,就是在一个类中获取登录后的cookie然后写入本地的TXT文件中,再在需要的 ...

如果是临时使用,建议直接保存在一个全局静态变量中,public static string TempCookie="";
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 20:10

© 2014-2021

快速回复 返回顶部 返回列表