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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 5281|回复: 10

[学生提问] 【爬虫疑问???】

[复制链接]
发表于 2018-3-9 00:00:51 | 显示全部楼层 |阅读模式
2个问题请问

(1)请问
webbrowser 登入后的资讯(cookie、session)
有没有办法让
webclient 接手去爬需要登入后才看的到的网页
谢谢

(2)请问C#或是其它语言
有没有什么套件或是框架能结合(1)的功能
就是使用者把
帐号、密码 输入后去登入
不用管它一直转址的问题
认证成功后
再去取得想要的网页

谢谢大家


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-3-9 08:08:25 | 显示全部楼层
1是可以的,这个你登录后获取Cookie直接让Http类带上就行了。
发表于 2018-3-9 22:25:00 | 显示全部楼层
路过学习下
 楼主| 发表于 2018-3-9 23:31:52 | 显示全部楼层
sufeinet 发表于 2018-3-9 08:08
1是可以的,这个你登录后获取Cookie直接让Http类带上就行了。

请问站长
所以我写一个程式
把webbrowser和你的httphelper包进去
不过遇到多难登入的网站
转了多少个网址
终究就是会转到登入的画面去
我再把【帐号】、【密码】输入到网页进行认证
认证成功后
httphelper取得webbrower的cookie
接手接下来爬虫的工作
是这样子吗??
我想问站长的是红色粗体字适用于所有网站??
发表于 2018-3-10 07:54:01 | 显示全部楼层
是的,适用所有网站,但具体能不能成功,还要看网站有没有其他限制,检查是否是爬虫和正常浏览有很多种方法,而且webbrower获取的Cookie并不见得就是完整的,这个控件与真正的浏览器还是有区别的,最少使用Cookie属性提取的并不完整。建议可以使用个第三方的浏览器控件或者是开源的。
发表于 2018-3-10 07:54:51 | 显示全部楼层
真要用的话可以借助一下Api提取Cookie

[C#] 纯文本查看 复制代码
//取当前webBrowser登录后的Cookie值   
        [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
        static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref int pcchCookieData, int dwFlags, object lpReserved);
        //取出Cookie,当登录后才能取    
        private static string GetCookieString(string url)
        {
            // Determine the size of the cookie      
            int datasize = 256;
            StringBuilder cookieData = new StringBuilder(datasize);
            if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
            {
                if (datasize < 0)
                    return null;
                // Allocate stringbuilder large enough to hold the cookie    
                cookieData = new StringBuilder(datasize);
                if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, null))
                    return null;
            }
            return cookieData.ToString();
        }


不过这个方法也不见得完整,只是比直接提取强一点
 楼主| 发表于 2018-3-10 13:36:02 | 显示全部楼层
sufeinet 发表于 2018-3-10 07:54
真要用的话可以借助一下Api提取Cookie

[mw_shl_code=csharp,true]//取当前webBrowser登录后的Cookie值   ...

请问站长
你这个算是提取windows里面掌管cookies的元件
wininet.dll吗
它是不管什么浏览器
cookies都会先经过它那边吗??
发表于 2018-3-10 13:37:02 | 显示全部楼层
只有IE吧
回复

使用道具 举报

 楼主| 发表于 2018-4-9 22:45:26 | 显示全部楼层
站長好
您方便寫個webbrowser+webclient 實際的例子給我看一下嗎??
謝謝
 楼主| 发表于 2018-4-11 16:55:56 | 显示全部楼层
我自己做出來了
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-4-16 18:55

© 2014-2021

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