Почему я не могу использовать scrapysharp в форме windows?
Я выяснил, как использовать scrapysharp в консольном приложении. Но когда я переключился на использование формы (для лучшего пользовательского интерфейса), программа передала эту строку кода:
WebPage PageResult = Browser.NavigateToPage(new Uri("http://192.168.1.99"));
Что я уже пробовал:
Вот полное консольное приложение:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ScrapySharp.Core; using ScrapySharp.Html.Parsing; using ScrapySharp.Network; using HtmlAgilityPack; using ScrapySharp.Extensions; using ScrapySharp.Html.Forms; namespace SampleScraperClient { class Program { static void Main(string[] args) { // setup the browser ScrapingBrowser Browser = new ScrapingBrowser(); Browser.AllowAutoRedirect = true; // Browser has many settings you can access in setup Browser.AllowMetaRedirect = true; //go to the home page WebPage PageResult = Browser.NavigateToPage(new Uri("http://192.168.1.99/")); // get first piece of data, the page title HtmlNode Center = PageResult.Html.CssSelect("Center").First(); string Bobby = Center.InnerText; Console.WriteLine(Bobby); // find a form and send back data //PageWebForm form = PageResult.FindFormById("dataForm"); // assign values to the form fields //Console.ReadKey(); //Console.WriteLine(Bobby); Console.ReadKey(); Console.WriteLine("this far"); string test = Bobby; string search = "T1"; int foundPos = findPermutation(test, search); Console.WriteLine(foundPos); if (foundPos != -1) { Console.WriteLine(test.Substring(foundPos, search.Length)); Console.WriteLine(" "); char[] x = { Bobby[foundPos + 5], Bobby[foundPos + 6], Bobby[foundPos + 7], Bobby[foundPos + 8] }; string T1 = new string(x); Console.WriteLine(T1); double j; if (double.TryParse(T1, out j)) { j = (1.8 * j) + 32; Console.WriteLine(j); } else { Console.WriteLine("String could not be parsed."); } } else { Console.WriteLine("Oops!"); } Console.ReadKey(); } static bool matchesPermutation(string test, string search) { string remaining = search; for (int i = 0; i < test.Length; i++) { int pos = remaining.IndexOf(test[i]); if (pos == -1) return false; else remaining = remaining.Remove(pos, 1); } return true; } static int findPermutation(string test, string search) { for (int i = 0; i < test.Length - search.Length + 1; i++) if (matchesPermutation(test.Substring(i, search.Length), search)) return i; return -1; } } }
А вот и код формы Windows:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ScrapySharp.Network; using HtmlAgilityPack; using ScrapySharp.Extensions; namespace UGH2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { // setup the browser ScrapingBrowser Browser = new ScrapingBrowser(); Browser.AllowAutoRedirect = true; // Browser has many settings you can access in setup Browser.AllowMetaRedirect = true; WebPage PageResult = Browser.NavigateToPage(new Uri("http://192.168.1.99")); //go to the home page // get first piece of data, the page title HtmlNode Center = PageResult.Html.CssSelect("Center").First(); string fruit = Center.InnerText; label1.Text = fruit; } } }
ZurdoDev
В чем же ошибка?
Bobzilla Donovan
Здесь действительно нет никакой ошибки. Код не выходит за пределы браузера.Инструкция навигации. Если я приостанавливаю отладку, она всегда переходит к этой точке кода. Я не могу закрыть форму, кроме как нажав кнопку "Остановить отладку" на панели инструментов.
Philippe Mori
Куча бесполезного кода. Вы всегда должны предоставлять минимальный код, необходимый для воспроизведения проблемы. Сброс большого количества кода никому не помогает.