抓取iframe内数据(C#)

2023-11-02

      当时企图抓取这iframe数据还费了不少劲,早就想记录下来,但是由于自身懒得让人惊叹,结果一直拖到现在。

      需求是要获取到一些网站上的大批数据,这些数据都是分很多页的。最初思路就是用web程序一页一页抓取,保存到Excel中。通常情况下用以下代码就能取到网页HTML文档:

WebRequest rqt =WebRequest.Create("http://www.xxxx.com");

WebResponse res = rqt.GetResponse();

Stream resStream = res.GetResponseStream();

StreamReader sr =newStreamReader(resStream, System.Text.Encoding.UTF8);

string strHtml = sr.ReadToEnd();   //获取到的HTML

resStream.Close();

sr.Close();

再解析HTML,截取需要的部分存储。

但发现,部分网页数据必须嵌套在iframe内才能显示正确结果,直接访问就显示“非法操作!”,且不论GET还是POST方式。

把iframe弄成服务器控件,试图后台获取它的InnerHtml,但得不到iframe内的文档。再用JS取试试:document.frames["iframe1"].document.body.innerHTML,在iframe内嵌套的是站内网页的情况下,这种方式是能取到数据的。若是站外的网页,会提示错误:“拒绝访问。”,这个是JS跨域问题造成的。搜下资料,有说jQuery能通过jsonp解决跨域问题,不由欣喜地认真地学习实战了一番,结果证实尼玛这是忽悠呢。jQuery要求被访问的URL最终返回jsonp数据才能解析。这对我的情况明显不实用,我要能控制请求的页面,还抓什么数据啊,直接到数据库操作不就行了。而且jsonp的实质是使用html的script标记来进行跨域请求,又回到前面的问题,这个URL只能嵌套在iframe内才能得到正确结果,绕一圈原来是白忙一气!

在有点泄气的时候,用IE的开发人员工具查看iframe内的文档,惊觉:C/S程序权限高更容易实现?!立马就想到WebBrowser控件,动手建立WinForm项目,一番捣鼓运行测试,哈,豁然开朗!WebBrowser操作iframe比JS顺畅N多,整理一下用法:

     1.读取iframe内HTML文档

  如:webBrowser1.Document.Window.Frames["iframe1"].Document.Body.InnerHtml

     2.读取iframe内元素的HTML

  如:webBrowser1.Document.Window.Frames["iframe1"].Document.GetElementsByTagName("table")[1].OuterHtml

     3.点击iframe内按钮

  如:webBrowser1.Document.Window.Frames["iframe1"].Document.GetElementsByTagName("input")[0].InvokeMember("click");

     4.改变iframe的目标文档(翻页时可用到)

  如:webBrowser1.Document.GetElementsByTagName("iframe")["iframe1"].SetAttribute("src","javascript:goto(2);");

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抓取iframe内数据(C#) 的相关文章

随机推荐

  • 【译】Hard Forks, Soft Forks, Defaults and Coercion

    区块链领域的一个重要论据是硬叉或软叉是否是首选的协议升级机制 两者之间的基本区别在于 软叉通过严格减少有效的交易集来改变协议的规则 所以遵循旧规则的节点仍然会进入新链 假设大多数矿工 验证者实施叉 而硬叉允许以前无效的交易和块变得有效 所以
  • centos7部署tomcat

    1 下载tomcat和jdk的tar gz包 并放在 root目录下 链接 https pan baidu com s 1fsJh8f6 rQxFzA5SIzUSfw 提取码 6zmg 2 解压文件 tar xf apache tomcat
  • [PCIe]LTSSM与电源管理

    1 LTSSM LTSSM全称是Link Training and Status State Machine 有以下11个状态 Detect Polling Configuration Recovery L0 L0s L1 L2 Hot R
  • 【cfeng work】什么是云原生 Cloud Native

    WorkProj 内容管理 云原生 云原生应用 十二要素应用 cfeng的work理解 本文introduce 云原生 Cloud Native相关内容 随着技术的迭代 从最初的物理机 gt 虚拟机 从单机 gt 分布式微服务 现在的热门概
  • C语言自定义函数求和

    include
  • vi笔记2——vi之简单编辑

    vi笔记2 vi之简单编辑 vi 简单编辑主要包含以下内容 Moving the cursor Adding and changing text Deleting moving and copying text More ways to e
  • 华三H3C交换机如何配置堆叠irf虚拟化(未配置检测机制)

    华三交换机如何配置堆叠irf IRF Intelligent Resilient Framework 智能弹性架构 是华三的软件虚拟化技术 将一台以上的交换机组合起来共同工作 能提供尽可能多的端口 多台交换机经过配置后可看成为一个虚拟的一体
  • 解析复杂的json数组嵌套

    chanNameList channelName 通道1 enable 1 perX 0 perY 0 rgbaBG 00000000 rgbaFont 00000000 channel 1 ip 192 168 121 13 status
  • JDK8的下载和安装,以及配置环境变量

    一 JDK的下载 https www oracle com java technologies downloads 1 进入JDK下载页面 2 进入下载页面 3 下载 二 JDK的安装 1 双击安装包 进入安装界面 直接点击下一步 2 选择
  • 综述---图像处理中的注意力机制

    重磅好文 微软亚研 对深度神经网络中空间注意力机制的经验性研究 论文 An Empirical Study of Spatial Attention Mechanisms in Deep Networks 高效Transformer层出不穷
  • Android MPAndroidChart使用,X轴标签自定义显示,坐标显示不全,换行显示

    一 自定义显示 XAxis xAxis chart getXAxis 获取设置X轴 ValueFormatter valueFormatter new ValueFormatter private final String xLableLi
  • 论文写作专题记录

    本文笔记来自20200317智源AI的分享 一 论文写作小白的成长之路 用理论支撑你 唉 你的这个研究确实是很有用 每个理论的后面可能都要有一个解释 即使别人不懂你这个理论 但是他也能理解这个事情 那么我们总结一下以往的工作是怎样的 所以我
  • react native js中调用native中的方法

    react native js中调用native中的方法 这里主要涉及到几个类 java ul li Base class for Catalyst native modules that require access to the lin
  • 【笔记】A simple yet effective baseline for 3d human pose estimation

    论文 https arxiv org abs 1705 03098v2 pytorch 本文代码参考 weigq 3d pose baseline pytorch A simple baseline for 3d human pose es
  • 外部中断EXTI

    项目场景 STM32外部中断 EXTI10 15 中断线挂起无法清除问题 问题描述 按键为PD14 输入模式 外部中断 进中断服务函数处理完后仍再次进入中断服务函数 无法退出 中断服务函数已加入清除中断线函数 检查引脚配置 输入模式 RCC
  • Javav中危险字符过滤工具类

    在进行网站开发时 为了避免网站遭到SQL语句的注入式攻击 应该考虑到过滤字符串中的危险字符 在该实例中 可以过滤 lt gt 等字符时 在处理页面中会把这些字符过滤掉 该示例主要利用String的replaceAll方法 public St
  • [spark]计算商品相似度

    一 商品相似度定义 基于物品的协同过滤算法是业界应用最多的算法 它的思想是给用户推荐那些和他们喜欢的物品相似的物品 主要分为两个步骤 一 计算物品之间的相似度 二 根据物品相似度和用户的历史行为给用户生成推荐列表 物品i和物品j的相似度可定
  • 创建工程文件(完整流程)

    创建并完成一个简单的工程的流程 添加文件 创建文件 此时 文件就添加完毕了 设置字体 设置Table的空格字数为4个 书写代码 拷贝的正点原子的例程 点击综合 生成设计后的原理图 第一种方法 进行I O引脚的分配 需要查看电路板的原理图分配
  • 【SSD-Caffe】安装使用教程

    1 下载镜像 参考我的另一篇博客 docker使用教程 我下载的是 docker pull bvlc caffe gpu 这个镜像 2 安装ssd caffe 下载之后这并不是ssd caffe 的环境 是较为原始版本的环境 所以还需要安装
  • 抓取iframe内数据(C#)

    当时企图抓取这iframe数据还费了不少劲 早就想记录下来 但是由于自身懒得让人惊叹 结果一直拖到现在 需求是要获取到一些网站上的大批数据 这些数据都是分很多页的 最初思路就是用web程序一页一页抓取 保存到Excel中 通常情况下用以下代