private void btnExport_Click(object sender, EventArgs e) { // 浏览器刚打开, 还没有开始抓取网页 var id = this.cbxBookConfig.SelectedValue as int? ?? 0; if (id <= 0) { Console.WriteLine("请选择导出的书名"); return; } if (cbxBookConfig.DataSource is List <Book> books) { var book = books.FirstOrDefault(x => x.Id == id); Console.WriteLine("正在导出,请稍后"); Task.Factory.StartNew(() => { BooksUtils.ExportBooks(new List <Book> { book }); var exportDir = Environment.CurrentDirectory + "\\ExportBooks"; Console.WriteLine($"导出完成,{exportDir}"); System.Diagnostics.Process.Start("explorer.exe", exportDir); }); } }
private void CrawlerRuleForm_Load(object sender, EventArgs e) { cbxChapterTitleType.SelectedIndex = 0; var bookConfigs = BooksUtils.GetAllBookConfig(); cbxBookName.DataSource = bookConfigs; cbxBookName.DisplayMember = nameof(Book.BookName); cbxBookName.ValueMember = nameof(Book.Id); var rules = CrawlerRuleUtils.GetAllCrawlerRules(); cbxSelectedRule.DataSource = rules; cbxSelectedRule.DisplayMember = nameof(CrawlerRule.RuleName); if (bookConfigs.Count > 0) { var book = bookConfigs.FirstOrDefault(); cbxBookName.Text = book.BookName; txtAuthor.Text = book.Author; cbxSelectedRule.Text = book.CrawlerRuleName; txtStartUrl.Text = book.StartUrl; } cbxRuleName.DataSource = JsonConvert.DeserializeObject <List <CrawlerRule> >(JsonConvert.SerializeObject(rules)); cbxRuleName.DisplayMember = nameof(CrawlerRule.RuleName); }
public IViewComponentResult Invoke() { IEnumerable <BooksCountByCategory> bookCountList = BooksUtils.GetBooksCount(m_booksRepo); return(View(bookCountList)); }
private void btnEditRule_Click(object sender, EventArgs e) { var crawlerRuleForm = new CrawlerRuleForm(); crawlerRuleForm.ShowDialog(); var bookConfigs = BooksUtils.GetAllBookConfig(); bookConfigs.ForEach(x => { x.BookName = $"{x.BookName}-{x.Author}"; }); cbxBookConfig.DataSource = bookConfigs; cbxBookConfig.DisplayMember = nameof(Book.BookName); cbxBookConfig.ValueMember = nameof(Book.Id); cbxBookConfig.SelectedIndex = 0; this.cbxBookConfig.Tag = CrawlerRuleUtils.GetAllCrawlerRules(); }
//初始化浏览器并启动 public void InitializeChromium() { CefSettings settings = new CefSettings(); // 启用缓存和cookie settings.CachePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"\Cache"; settings.PersistSessionCookies = true; // trojan go 客户端代理端口可以在配置文件中修改 settings.CefCommandLineArgs.Add("proxy-server", "socks5://127.0.0.1:1082"); // dir是Trojan go客户端配置文件的目录 SharpProxyTrojanGo.Start(Environment.CurrentDirectory + "/libs"); // Initialize cef with the provided settings Cef.Initialize(settings); // Create a browser component chromeBrowser = new ChromiumWebBrowser("https://www.google.com/"); // Add it to the form and fill it to the form window. this.panelBrowser.Controls.Add(chromeBrowser); chromeBrowser.Dock = DockStyle.Fill; chromeBrowser.LifeSpanHandler = new OpenPageSelf(); // 不用新窗口打开url chromeBrowser.KeyboardHandler = new CefKeyBoardHander(); this.Width = 1024; this.Height = 800; var bookConfigs = BooksUtils.GetAllBookConfig(); bookConfigs.ForEach(x => { x.BookName = $"{x.BookName}-{x.Author}"; }); cbxBookConfig.DataSource = bookConfigs; cbxBookConfig.DisplayMember = nameof(Book.BookName); cbxBookConfig.ValueMember = nameof(Book.Id); cbxBookConfig.SelectedIndex = 0; }
/// <summary> /// 添加一本书的配置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSaveBookRules_Click(object sender, EventArgs e) { var bookName = cbxBookName.Text; var author = txtAuthor.Text; var selectedRules = cbxSelectedRule.Text; var startUrl = txtStartUrl.Text; if (string.IsNullOrWhiteSpace(bookName) || string.IsNullOrWhiteSpace(author) || string.IsNullOrWhiteSpace(selectedRules) || string.IsNullOrWhiteSpace(startUrl)) { Console.WriteLine("爬虫配置填写不完整,请输入完整的配置"); MessageBox.Show("爬虫配置填写不完整,请输入完整的配置"); return; } BooksUtils.AddBook(new Book { BookName = bookName, Author = author, CrawlerRuleName = selectedRules, StartUrl = startUrl }); Console.WriteLine("爬虫配置保存成功"); }