Browse Source

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

master
feng 2 years ago
parent
commit
bdada5e597
  1. 20
      客户端/齐越慧眼/齐越慧眼/MemoryHelper.cs
  2. 31
      客户端/齐越慧眼/齐越慧眼/Models/SearchItemModel.cs
  3. 11
      客户端/齐越慧眼/齐越慧眼/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.MemoryMappedFiles;
using System.IO.Pipes; using System.IO.Pipes;
using System.Text; using System.Text;
using System.Threading;
using System.Windows; using System.Windows;
namespace Utils namespace Utils
{ {
public class MemoryHelper public class MemoryHelper
{ {
static int time = 10 * 1000;
/// <summary> /// <summary>
/// 获取token /// 获取token
/// </summary> /// </summary>
@ -29,14 +32,25 @@ namespace Utils
do do
{ {
temp = sr.ReadLine(); temp = sr.ReadLine();
time -= 1000;
Thread.Sleep(1000);
if (time <= 0)
return string.Empty;
} }
while (!temp.StartsWith("SYNC")); while (!temp.StartsWith("SYNC"));
time = 5 * 1000;
while ((temp = sr.ReadLine()) != null) 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; }
}
}

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

@ -6,13 +6,22 @@
xmlns:local="clr-namespace:齐越慧眼.UserControls" xmlns:local="clr-namespace:齐越慧眼.UserControls"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"> 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 DockPanel.Dock="Top" > <DockPanel DockPanel.Dock="Top" >
<Button Content="返回" Margin="0 0 10 0" Name="back" Click="back_Click"></Button> <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> <TextBox x:Name="txtUrl" Keyboard.KeyUp="txtUrl_KeyUp"></TextBox>
</DockPanel> </DockPanel>
<Grid x:Name="grid" DockPanel.Dock="Bottom" Margin="0 10 0 0"> <Grid x:Name="grid" DockPanel.Dock="Bottom" Margin="0 10 0 0">
</Grid> </Grid>
</DockPanel> </DockPanel>
</Grid>
</UserControl> </UserControl>

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

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