苏飞论坛广告位

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

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

HttpHelper万能框架(V2.1) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V1.9) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 584|回复: 10

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

[复制链接]
  • TA的每日心情
    开心
    2018-3-10 10:47
  • 签到天数: 11 天

    [LV.3]偶尔看看II

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

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

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

    谢谢大家
  • TA的每日心情
    开心
    前天 08:29
  • 签到天数: 530 天

    [LV.9]以坛为家II

    发表于 2018-3-9 08:08:25 | 显示全部楼层
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 172 天

    [LV.7]常住居民III

    发表于 2018-3-9 22:25:00 | 显示全部楼层
  • TA的每日心情
    开心
    2018-3-10 10:47
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2018-3-9 23:31:52 | 显示全部楼层
    sufeinet 发表于 2018-3-9 08:08
    1是可以的,这个你登录后获取Cookie直接让Http类带上就行了。

    请问站长
    所以我写一个程式
    把webbrowser和你的httphelper包进去
    不过遇到多难登入的网站
    转了多少个网址
    终究就是会转到登入的画面去
    我再把【帐号】、【密码】输入到网页进行认证
    认证成功后
    httphelper取得webbrower的cookie
    接手接下来爬虫的工作
    是这样子吗??
    我想问站长的是红色粗体字适用于所有网站??
  • TA的每日心情
    开心
    前天 08:29
  • 签到天数: 530 天

    [LV.9]以坛为家II

    发表于 2018-3-10 07:54:01 | 显示全部楼层
    是的,适用所有网站,但具体能不能成功,还要看网站有没有其他限制,检查是否是爬虫和正常浏览有很多种方法,而且webbrower获取的Cookie并不见得就是完整的,这个控件与真正的浏览器还是有区别的,最少使用Cookie属性提取的并不完整。建议可以使用个第三方的浏览器控件或者是开源的。
  • TA的每日心情
    开心
    前天 08:29
  • 签到天数: 530 天

    [LV.9]以坛为家II

    发表于 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();
            }


    不过这个方法也不见得完整,只是比直接提取强一点
  • TA的每日心情
    开心
    2018-3-10 10:47
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 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都会先经过它那边吗??
  • TA的每日心情
    开心
    前天 08:29
  • 签到天数: 530 天

    [LV.9]以坛为家II

    发表于 2018-3-10 13:37:02 | 显示全部楼层
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-3-10 10:47
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2018-4-9 22:45:26 | 显示全部楼层
    站長好
    您方便寫個webbrowser+webclient 實際的例子給我看一下嗎??
    謝謝
  • TA的每日心情
    开心
    2018-3-10 10:47
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2018-4-11 16:55:56 | 显示全部楼层
    您需要登录后才可以回帖 登录 | 马上注册

    本版积分规则

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

    GMT+8, 2018-6-24 15:31

    © 2017-2018

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