C# - 通过控制台应用程序访问 Javascript 修改的 HTML
C# - Accessing Javascript modified HTML via a Console app
我正在尝试访问页面的HTML,因为它被页面上的JavaScript修改了。 这是我目前根据我在网上找到的内容一直在尝试的。
using System;
using System.Windows.Forms;
using System.IO;
namespace WebBrowserDemo
{
class Program
{
public const string TestUrl = @"http://www.theverge.com/2012/7/2/3126604/android-jelly-bean-updates-htc-samsung-google-pdk";
[STAThread]
static void Main(string[] args)
{
WebBrowser wb = new WebBrowser();
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
wb.Navigate(TestUrl);
while (wb.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
Console.WriteLine("'nPress any key to continue...");
Console.ReadKey(true);
}
static void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser wb = (WebBrowser)sender;
HtmlElement document = wb.Document.GetElementsByTagName("html")[0];
using (StreamWriter sw = new StreamWriter("OuterHTML.txt"))
{
sw.WriteLine(document.OuterHtml);
}
var abc = wb.Document.InvokeScript("eval", new object[] { "window.scrollTo(0, document.body.scrollHeight);" });
Console.WriteLine();
document = wb.Document.GetElementsByTagName("html")[0];
using (StreamWriter sw = new StreamWriter("OuterHTML2.txt"))
{
sw.WriteLine(document.OuterHtml);
}
}
}
}
最终目标是滚动到页面底部,激活任何JS以加载对文章的评论。尽管目前我在脚本运行之前和之后返回的html是相同的。
有什么建议吗?
谢谢
您应该使用 WebBrowser 控件执行此操作。
这基本上是IE的组件化版本。 将页面加载到控件中。 您甚至可能不需要显示页面。 可以注册将在页面完全加载时调用的事件处理程序。 没有确定脚本何时"完成"的方法 - 脚本是开放式的,可以运行任意长的时间。 因此,您必须构建一个启发式的"等待期",然后在等待期过后检查 HTML。
顺便说一下,这正是IECapt所做的。
相关文章:
- 用Javascript修改内部标记的CSS规则
- 历史记录和通过JavaScript修改的HTML
- 如何使用 javascript 修改网格视图单元格值
- 鼠标离开浏览器窗口的Javascript修改
- Javascript-修改函数或从字符串中计算函数
- Chrome在尝试从Javascript修改CSS3动画时崩溃
- 用javascript修改链接html
- 获取远程url's上次使用javascript修改的日期
- C# - 通过控制台应用程序访问 Javascript 修改的 HTML
- 使用 JavaScript 修改 Facebook 共享内容
- JavaScript 修改 URL 参数数组
- 使用 JavaScript 修改 DOM 元素属性
- 如何使用 JavaScript 修改网站的标题
- 想要用greatemonkey/javascript修改页面上的链接
- 如何使用 javascript 修改特定域的现有 cookie 值
- Javascript - 修改函数内的全局变量
- 使用 JavaScript 修改 BIRT 中的查询输出
- Mozilla 所需的任何 JavaScript 修改
- 如何在窗口打开后使用 javascript 修改浏览器属性/属性
- Javascript:修改函数以动态创建表