Tag: web scraping

使用C#和.NET Framework进行屏幕抓取,Web抓取,Web收集,Web数据提取等

我正在使用C#中的Microsoft .NET应用程序进行Web收集,Web Scraping,Web数据提取,屏幕抓取等,无论您想要什么称呼它。 对于解析HTML,我正在尝试合并HTML Agility Pack,但它并不像我想象的那么容易。 我已经包含了一些我目前所掌握的规范和图像,并希望得到你对我如何进行的意见。 基本上,我想做一些类似于Visual Web Ripper中使用的布局,但我不知道他们是如何做到的……任何想法? 图片: http://img69.imageshack.us/img69/8880/webharvester1.png http://img198.imageshack.us/img198/9563/webharvester2.png 产品规格: 我的目标是创建一个非常用户友好的点击式应用​​程序,用于从Web下载数据和图像。 我想使用Web浏览器加载HTML页面,并将解析后的数据和图像链接输出到文本框中。 用户可以指定他们想要的HTML标签,然后将数据下载到网格中。 最后,将数据导出为他们需要的任何格式。 我正在尝试使用HTML Agility Pack在网页上加载HTML并将其显示在文本框中。 // Load Web Browser private void Form6_Load(object sender, EventArgs e) { // Navigate to webpage webBrowser.Navigate(“http://www.webopedia.com/TERM/H/HTML.html”); // Save URL to memory SiteMemoryArray[count] = urlTextBox.Text; // Load HTML from webBrowser HtmlWindow window = webBrowser.Document.Window; string […]

如何仅从网站上删除标记

我正在开发一个webcrawler。 目前我刮掉整个内容,然后使用正则表达式我删除, , 和其他标签,并获取正文的内容。 但是,我正在尝试优化性能,我想知道是否有一种方法可以只刮掉页面的 ? namespace WebScrapper { public static class KrioScraper { public static string scrapeIt(string siteToScrape) { string HTML = getHTML(siteToScrape); string text = stripCode(HTML); return text; } public static string getHTML(string siteToScrape) { string response = “”; HttpWebResponse objResponse; HttpWebRequest objRequest = (HttpWebRequest) WebRequest.Create(siteToScrape); objRequest.UserAgent = “Mozilla/4.0 (compatible; MSIE 6.0; ” […]

C#Web浏览器,单击并突出显示Frame / iFrame元素

Iam正在寻找一个浏览器控件,用户可以在网页中预览帧/ iframe,然后突出显示它的元素,一旦突出显示,我就可以得到所选元素的div或id。 我们有什么方法可以做到吗?

刮取JavaScript动态生成的数据

我尝试使用PhantomJSDriver来抓取这个URL: http ://www.tsetmc.com/loader.aspx ?ParTree = 151311&i = 67126881188552864 1)首先,在此URL中,我们必须单击名为“سابقه”的上方蓝色链接 2)然后我想废弃这个XPath: //*[@id=”trade”]/div[2]/table/tbody/tr[9]/td[7] 这是我的代码,但是这段代码找不到必需的XPath: var driverService = PhantomJSDriverService.CreateDefaultService(); var driver = new PhantomJSDriver(driverService); driver.Url = “http://www.tsetmc.com/loader.aspxParTree=151311&i=67126881188552864”; driver.Navigate(); var source = driver.PageSource; driver.FindElementByXPath(“//*[@id=\”tabs\”]/div/ul/li[3]/a”).Click(); Thread.Sleep(5000); try { var pathElement = driver.FindElementByXPath(“//[@id=\”trade\”]/div[2]/table/tbody/tr[9]/td[7]”); MessageBox.Show(pathElement.Text); } catch { driver.Dispose(); this.Close(); } driver.Dispose();

在iframe和Javascript完成后完成WebBrowser控制文档

我需要捕获生成的HTML的图像。 我正在使用Alex Filipovici的优秀解决方案: 将HTML字符串转换为图像 。 除非我正在尝试加载具有使用某些Javascript加载的iframe的页面,否则它的效果很好。 static int width = 1024; static int height = 768; public static void Capture() { var html = @“ “; StartBrowser(HTML); } private static void StartBrowser(string source) { var th = new Thread(()=> { var webBrowser = new WebBrowser(); webBrowser.Width = width; webBrowser.Height = height; webBrowser.ScrollBarsEnabled = false; webBrowser.DocumentCompleted […]

使用C#HttpClient登录网站并从另一个页面抓取信息

我正在尝试使用C#和Chrome Web Inspector登录http://www.morningstar.com并在页面http://financials.morningstar.com/income-statement/is.html?t=BTDPF&region上检索一些信息= usa&culture = en-US 。 我不太明白,必须使用什么心理过程来解释Web Inspector中的信息,以模拟登录并模拟保持会话并导航到下一页以收集信息。 有人可以解释或指向我的资源吗? 目前,我只有一些代码来获取主页和登录页面的内容: public class Morningstar { public async static void Ru4n() { var url = “http://www.morningstar.com/”; var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.TryAddWithoutValidation(“Accept”, “text/html,application/xhtml+xml,application/xml”); httpClient.DefaultRequestHeaders.TryAddWithoutValidation(“Accept-Encoding”, “gzip, deflate”); httpClient.DefaultRequestHeaders.TryAddWithoutValidation(“User-Agent”, “Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0”); httpClient.DefaultRequestHeaders.TryAddWithoutValidation(“Accept-Charset”, “ISO-8859-1”); var response = await httpClient.GetAsync(new Uri(url)); response.EnsureSuccessStatusCode(); using (var […]

如何从网页中提取动态ajax内容

我的要求是从网页中提取所需的内容。 该页面有一个使用ajax填充的部分。 当我在页面源中查看时,它没有显示使用ajax加载的内容。 部分内容将根据选中的复选框进行更改。 如果我们选中“印度”复选框,则该部分将显示印度的所有详细信息。 页面源仅显示默认内容,而不显示使用ajax显示的内容。 我在选中复选框后检查了页面源,但它仍然只显示默认值。 如何获取该部分内容,

程序自动化表单字段输入和网页结果检查

我正在尝试使用C#(可能使用WinForms)创建一个程序,该程序将在特定网站的表单字段中输入许可证号,并validation许可证号是否是当前有效的许可证。 我不确定从哪里开始,因为我甚至无法在网站的源代码中找到表单字段ID,并且不确定网站使用什么技术。 此外,该程序的目的是输入许可证号列表并返回每个许可证的名称和validation状态。 数据源是网站。 关于如何解决这个问题的任何信息都将非常感激,我是一名中级C#开发人员 – 主要在ASP.Net工作,但感觉Winforms可能更适合这个项目。 亲切的问候

使用webbrowser控件序列化浏览URL的数量

我正在使用webbrowser控件…这是我的代码: private void button1_Click(object sender, EventArgs e) { foreach (string s in URLsList) { webBrowser1.Navigate(s); } private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { //Do something } 但是,我如何序列化URL的浏览并为每个URL执行DocumentCompleted ? 我该如何防止冲突?

Web浏览器行为问题

我试图用.NET C#自动化Webbrowser。 问题是控件或我应该说IE浏览器在不同的计算机上表现得很奇怪。 例如,我点击链接并在第一台计算机上填充Ajax弹出窗体,如下所示,没有任何错误: private void btn_Start_Click(object sender, RoutedEventArgs e) { webbrowserIE.Navigate(“http://www.test.com/”); webbrowserIE.DocumentCompleted += fillup_LoadCompleted; } void fillup_LoadCompleted(object sender, System.Windows.Forms.WebBrowserDocumentCompletedEventArgs e) { System.Windows.Forms.HtmlElement ele = web_BrowserIE.Document.GetElementById(“login”); if (ele != null) ele.InvokeMember(“Click”); if (this.web_BrowserIE.ReadyState == System.Windows.Forms.WebBrowserReadyState.Complete) { web_BrowserIE.Document.GetElementById(“login”).SetAttribute(“value”, myUserName); web_BrowserIE.Document.GetElementById(“password”).SetAttribute(“value”, myPassword); foreach (System.Windows.Forms.HtmlElement el in web_BrowserIE.Document.GetElementsByTagName(“button”)) { if (el.InnerText == “Login”) { el.InvokeMember(“click”); } } web_BrowserIE.DocumentCompleted […]