5 changed files with 194 additions and 4 deletions
@ -0,0 +1,31 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
using System.Windows.Markup; |
||||
|
|
||||
|
namespace 齐越慧眼.Models |
||||
|
{ |
||||
|
public class SearchItemModel |
||||
|
{ |
||||
|
|
||||
|
public string Price { get; set; } |
||||
|
|
||||
|
public string Sales { get; set; } |
||||
|
|
||||
|
public string Title { get; set; } |
||||
|
|
||||
|
public string Img { get; set; } |
||||
|
|
||||
|
public string ItemId { get; set; } |
||||
|
|
||||
|
public string Html { get; set; } |
||||
|
|
||||
|
} |
||||
|
|
||||
|
public class SearchItemModelExt : SearchItemModel |
||||
|
{ |
||||
|
public decimal _Price { get; set; } |
||||
|
|
||||
|
public int _Sales { get; set; } |
||||
|
} |
||||
|
} |
@ -0,0 +1,119 @@ |
|||||
|
using CefSharp; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
using System.Text.RegularExpressions; |
||||
|
using System.Threading; |
||||
|
using System.Threading.Tasks; |
||||
|
using System.Windows; |
||||
|
using System.Windows.Markup; |
||||
|
using 齐越慧眼.Models; |
||||
|
|
||||
|
namespace 齐越慧眼.UserControls |
||||
|
{ |
||||
|
public partial class BrowerControl |
||||
|
{ |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 淘宝查询按钮点击
|
||||
|
/// </summary>
|
||||
|
public void StartTaoBaoSearch() |
||||
|
{ |
||||
|
if (!btn_searchItems.IsEnabled) |
||||
|
return; |
||||
|
|
||||
|
|
||||
|
btn_searchItems.IsEnabled = false; |
||||
|
searchLoding.Visibility=Visibility.Visible; |
||||
|
|
||||
|
Task.Factory.StartNew(() => |
||||
|
{ |
||||
|
try |
||||
|
{ |
||||
|
List<SearchItemModelExt> totalItems = new List<SearchItemModelExt>(); |
||||
|
|
||||
|
for (int i = 1; i <= 5; i++) |
||||
|
{ |
||||
|
|
||||
|
//等待页面加载完成
|
||||
|
while (!DoJavaScript("return $(document.body).html();").isOk) |
||||
|
{ |
||||
|
Thread.Sleep(100); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//切换到当前页
|
||||
|
int totalPage = (int)DoJavaScript("return $(\"#mainsrp-pager li[class*=item]\").length").result; |
||||
|
if (totalPage > i) |
||||
|
{ |
||||
|
DoJavaScript($"$($(\"#mainsrp-pager li[class*=item]\")[{i}]).find(\"a\")[0].click()"); |
||||
|
Thread.Sleep(500); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//等待页面加载完成
|
||||
|
while (!DoJavaScript("return $(document.body).html();").isOk) |
||||
|
{ |
||||
|
Thread.Sleep(100); |
||||
|
} |
||||
|
|
||||
|
while (DoJavaScript(@"return $(""#mainsrp-pager li[class='item active']"")[0].innerText").result?.ToString() != i.ToString()) |
||||
|
{ |
||||
|
Thread.Sleep(100); |
||||
|
} |
||||
|
|
||||
|
//获取当前页面的所有商品信息
|
||||
|
|
||||
|
var res = DoJavaScript(@"var ids=[];
|
||||
|
$('div#mainsrp-itemlist .items .item').each(function(){ |
||||
|
|
||||
|
var ele=this; |
||||
|
var itemid= $(ele).find(""a"").attr(""data-nid""); |
||||
|
var infoDiv=$($(ele).find("".J_IconMoreNew"")); |
||||
|
var price=infoDiv.find("".g_price"").text(); |
||||
|
var sales=infoDiv.find("".deal-cnt"").text(); |
||||
|
var title=infoDiv.find("".title"").text(); |
||||
|
var img=$(ele).find(""img"").attr(""src""); |
||||
|
if(img==""//g.alicdn.com/s.gif""||img==null||img==undefined)
|
||||
|
{ |
||||
|
img=$(ele).find(""img"").attr(""data-src""); |
||||
|
} |
||||
|
ids.push({itemid:itemid,price:price,sales:sales,title:title,img:img,html:$(this).html()}); |
||||
|
|
||||
|
}); |
||||
|
return ids;");
|
||||
|
|
||||
|
List<SearchItemModelExt> itemHtmls = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SearchItemModelExt>>(Newtonsoft.Json.JsonConvert.SerializeObject(res.result)); |
||||
|
|
||||
|
itemHtmls.ForEach(item => |
||||
|
{ |
||||
|
item.Price = Regex.Match(item.Price, @"([1-9]\d*\.?\d*)|(0\.\d*[1-9])").Groups[0].Value.Trim(); |
||||
|
item.Sales = Regex.Match(item.Sales, @"([1-9]\d*\.?\d*)|(0\.\d*[1-9])").Groups[0].Value.Trim(); |
||||
|
item.Title = item.Title.Trim(); |
||||
|
item.Img = item.Img.StartsWith("//") ? $"https:{item.Img}" : item.Img; |
||||
|
}); |
||||
|
|
||||
|
//将当前页面的商品加入
|
||||
|
totalItems.AddRange(itemHtmls); |
||||
|
|
||||
|
Thread.Sleep(2000); |
||||
|
} |
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
finally |
||||
|
{ |
||||
|
Application.Current.Dispatcher.Invoke(() => { |
||||
|
|
||||
|
btn_searchItems.IsEnabled = true; |
||||
|
searchLoding.Visibility = Visibility.Collapsed; |
||||
|
}); |
||||
|
} |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
Loading…
Reference in new issue