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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 5578|回复: 7

[求助] 如何获取动态加载的网页最终 html?这个网站超难

[复制链接]
发表于 2015-6-5 13:50:56 | 显示全部楼层 |阅读模式
http://www3.nhk.or.jp/news/index.html?page=cat6

就是上面这个网站,页面中部的内容无法获取
1 直接用httphelper是读不完整的,只是初始的页面html
   用浏览器 审查元素 可以看到完整内容,查看源代码也是初始的页面html

2 用webbrowser控件在complete()里获取其内容,也只是初始的页面html,但控件页面获取的内容完整
   使用如下代码作为complete()结束判断:
            if (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
                return;

            if (e.Url.ToString() != webBrowser1.Document.Url.ToString())
                return;

            //if (!webBrowser1.Document.Body.InnerText.Contains("米政府 400万人分の個人情報流出か")) return;
            this.navigateCount--;
            if (0 == this.navigateCount && this.webBrowser1.Url != null)
            {}

3 试着分析其获取过程,其最终获取中部内容的链接是
        GET /news/html/cat2day6.xml?t=143343834 HTTP/1.1

   后面这串数字 143343834 不知道从哪来的,分析不出来


请各位大大指教 ^_^


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-6-5 14:07:41 | 显示全部楼层
这个不难吧,
http://www3.nhk.or.jp/news/html/cat2day6.xml?t=143348424 这是最近两天的
http://www3.nhk.or.jp/news/html/20150603/xml/cat6.xml?t=143348420  这是6月3号的
http://www3.nhk.or.jp/news/html/20150602/xml/cat6.xml?t=143348420 这是6月2号的

很有规律的,直接提取就行了,

20150602这是日期

用我的框架很容易就能获取到内容
http://tool.sufeinet.com/HttpHel ... ay6.xml?t=143348424
 楼主| 发表于 2015-6-5 16:29:39 | 显示全部楼层
飞飞,没那么简单
1 关于那串数字的顺序:对当前单个页面来说,规律确实如此,但当你刷新、重新加载,这串数字会变的,我唯一发现的规律就是每次刷新数字递增,递增没有规律,有可能是某种时间简化字串
你可以现在再次打开这个链接,看看6月3日的链接变成了什么,我现在查看链接变成了:
http://www3.nhk.or.jp/news/html/20150603/xml/cat6.xml?t=143349271
已经不是原来的数字了
当我需要操作这个页面的时候,我希望至少拿到初始这串数字,那才有继续根据这个规律爬取页面的基础
或者拿到完全加载之后的完整页面html
问题是目前拿到的html都是初始页面的,响应内容、cookie等元素都不包含cat6.xml?t=143349271这样的链接或者数字,这些东西目前都是通过浏览器 审查元素 获取的
这是我想来向你讨教的问题

2 关于获取内容:如果直接访问通过 审查元素 看到的真实请求url,那么直接用你的httphelper也能获取,和万能框架没有关系

再次向你请教,谢谢指教

刷新就会变化的数字

刷新就会变化的数字
发表于 2015-6-5 19:40:32 | 显示全部楼层
T就是一个随机数,就是强制刷新缓存的,不加也不会影响,
 楼主| 发表于 2015-6-5 20:48:12 | 显示全部楼层
非常感谢,确实如此,原来是rss,我被这一串数字迷花眼了,呵呵
 楼主| 发表于 2015-6-5 20:52:49 | 显示全部楼层
另外,飞飞,httphelper原来的代码中对这个网页中的 xml 解析编码不正确,原因是单独读取网页中部的xml会出现编码判断错误的问题,我把我临时解决的代码贴出来,你有空的时候可以改进 httphelper

[C#] 纯文本查看 复制代码
                    Match meta = Regex.Match(Encoding.Default.GetString(RawResponse), "<meta([^<]*)charset=([^<]*)[\"']", RegexOptions.IgnoreCase); //忽略大小写
                    string charter = (meta.Groups.Count > 2) ? meta.Groups[2].Value.ToLower() : string.Empty;
                    if (charter == "")
                    {                                                               //<?xml version="1.0" encoding="utf-8"?>
                        meta = Regex.Match(Encoding.Default.GetString(RawResponse), "<?xml([^<]*)encoding=([^<]*)[\"']", RegexOptions.IgnoreCase); //忽略大小写
                        charter = (meta.Groups.Count > 2) ? meta.Groups[2].Value.ToLower() : string.Empty;
                    }
发表于 2015-6-27 15:32:02 | 显示全部楼层
sleep几秒钟等网页加载完成就好啦。我之前遇到过这问题。
发表于 2015-6-29 16:16:54 | 显示全部楼层
膜拜中....!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-5-18 07:02

© 2014-2021

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