You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
5.1 KiB
136 lines
5.1 KiB
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);
|
|
}
|
|
|
|
//切换到当前页
|
|
string pageText = (string)DoJavaScript("return $(\"#mainsrp-pager div[class=total]\").text()").result;
|
|
|
|
pageText = Regex.Match(pageText, @"([1-9]\d*\.?\d*)|(0\.\d*[1-9])").Groups[0].Value.Trim();
|
|
|
|
int.TryParse(pageText, out int totalPage);
|
|
|
|
if (totalPage >= i)
|
|
{
|
|
DoJavaScript($"$($(\"#mainsrp-pager li[class*=item]\")[{i}]).find(\"a\")[0].click()");
|
|
Thread.Sleep(500);
|
|
}
|
|
|
|
|
|
//等待页面加载完成
|
|
while (DoJavaScript("return $(document.body).html();").result?.ToString().Contains("myitemState")!=true)
|
|
{
|
|
Thread.Sleep(100);
|
|
}
|
|
if (totalPage != 0)
|
|
{
|
|
while (DoJavaScript(@"return $(""#mainsrp-pager li[class='item active']"")[0].innerText").result?.ToString() != i.ToString())
|
|
{
|
|
Thread.Sleep(100);
|
|
}
|
|
|
|
}
|
|
|
|
//刷新总页数
|
|
pageText = (string)DoJavaScript("return $(\"#mainsrp-pager div[class=total]\").text()").result;
|
|
pageText = Regex.Match(pageText, @"([1-9]\d*\.?\d*)|(0\.\d*[1-9])").Groups[0].Value.Trim();
|
|
|
|
int.TryParse(pageText, out totalPage);
|
|
|
|
DoJavaScript("$(\"#mainsrp-pager li[class*=item]\")[0].scrollIntoView()");
|
|
|
|
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});
|
|
|
|
});
|
|
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);
|
|
|
|
if (i>=totalPage)
|
|
{
|
|
break;
|
|
}
|
|
Thread.Sleep(2000);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
finally
|
|
{
|
|
Application.Current.Dispatcher.Invoke(() => {
|
|
|
|
btn_searchItems.IsEnabled = true;
|
|
searchLoding.Visibility = Visibility.Collapsed;
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
}
|
|
}
|
|
|