Browse Source

初步加入获取淘宝分析按钮

master
feng 2 years ago
parent
commit
bdada5e597
  1. 20
      客户端/齐越慧眼/齐越慧眼/MemoryHelper.cs
  2. 31
      客户端/齐越慧眼/齐越慧眼/Models/SearchItemModel.cs
  3. 9
      客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml
  4. 17
      客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs
  5. 119
      客户端/齐越慧眼/齐越慧眼/UserControls/TaoBaoBrowerControl.cs

20
客户端/齐越慧眼/齐越慧眼/MemoryHelper.cs

@ -4,12 +4,15 @@ using System.IO;
using System.IO.MemoryMappedFiles;
using System.IO.Pipes;
using System.Text;
using System.Threading;
using System.Windows;
namespace Utils
{
public class MemoryHelper
{
static int time = 10 * 1000;
/// <summary>
/// 获取token
/// </summary>
@ -29,14 +32,25 @@ namespace Utils
do
{
temp = sr.ReadLine();
time -= 1000;
Thread.Sleep(1000);
if (time <= 0)
return string.Empty;
}
while (!temp.StartsWith("SYNC"));
while ((temp = sr.ReadLine()) != null)
time = 5 * 1000;
do
{
return temp;
Thread.Sleep(1000);
if (time <= 0)
return string.Empty;
}
while ((temp = sr.ReadLine()) == null);
return temp;
}
}

31
客户端/齐越慧眼/齐越慧眼/Models/SearchItemModel.cs

@ -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; }
}
}

9
客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml

@ -6,13 +6,22 @@
xmlns:local="clr-namespace:齐越慧眼.UserControls"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Border x:Name="searchLoding" Visibility="Collapsed">
<Border.Background>
<SolidColorBrush Color="White" Opacity="0.1"></SolidColorBrush>
</Border.Background>
<TextBlock Text="分析中" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="20"></TextBlock></Border>
<DockPanel>
<DockPanel DockPanel.Dock="Top" >
<Button Content="返回" Margin="0 0 10 0" Name="back" Click="back_Click"></Button>
<Button DockPanel.Dock="Right" Content="分析占比" x:Name="btn_searchItems" Click="btn_searchItems_Click" Visibility="Collapsed"></Button>
<TextBox x:Name="txtUrl" Keyboard.KeyUp="txtUrl_KeyUp"></TextBox>
</DockPanel>
<Grid x:Name="grid" DockPanel.Dock="Bottom" Margin="0 10 0 0">
</Grid>
</DockPanel>
</Grid>
</UserControl>

17
客户端/齐越慧眼/齐越慧眼/UserControls/BrowerControl.xaml.cs

@ -273,6 +273,11 @@ namespace 齐越慧眼.UserControls
{
if (lastUrl.StartsWith("https://s.taobao.com/search")) {
Application.Current.Dispatcher.Invoke(new Action(() =>
{
btn_searchItems.Visibility = Visibility.Visible;
}));
nowPatlom = 0;
}
if (lastUrl.StartsWith("https://search.jd.com/"))
@ -348,6 +353,13 @@ namespace 齐越慧眼.UserControls
{
AddTaoBaoOptionDiv();
CheckTaoBaoPageItem();
Application.Current.Dispatcher.Invoke(new Action(() =>
{
btn_searchItems.Visibility = Visibility.Visible;
}));
}
if (nowPatlom == 1)
@ -1315,6 +1327,11 @@ for(var i=0;i<filteris.length;i++)
lastUrl = string.Empty;
this.web.Back();
}
private void btn_searchItems_Click(object sender, RoutedEventArgs e)
{
StartTaoBaoSearch();
}
}
public class CefAsyncJS

119
客户端/齐越慧眼/齐越慧眼/UserControls/TaoBaoBrowerControl.cs

@ -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…
Cancel
Save