Browse Source

加入引用

master
feng 2 years ago
parent
commit
a2b75b0cb7
  1. 152
      JdShopListener/JdShopListener/MainWindowViewModel.cs

152
JdShopListener/JdShopListener/MainWindowViewModel.cs

@ -16,6 +16,8 @@ using Utils;
using System.Threading.Tasks;
using System.IO;
using System.IO.Compression;
using System.Text.RegularExpressions;
using System.Diagnostics;
namespace JdShopListener
{
@ -98,9 +100,86 @@ namespace JdShopListener
InitWeb();
}).ContinueWith((state) => {
LoadHYItems();
Test();
// LoadHYItems();
});
}
private void Test()
{
InitLoginCookie();
Stopwatch watch = new Stopwatch();
watch.Start();
for (int i = 1; i <= 100; i++)
{
try
{
var list = GetSearchList(i);
list.ForEach(skuId =>
{
try
{
var detail = GetItemDetail(skuId);
Thread.Sleep(1000);
var sku = new SkuModel()
{
SkuId = skuId
};
//主图
string src = detail.product.src;
var catIds = detail.product.cat;
List<int> cats = new List<int>();
foreach (var catId in catIds)
{
cats.Add((int)catId);
}
string cat = string.Join(",", cats);
//标题
string title = detail.product.name;
string shopId = detail.product.shopId;
string vid = detail.product.venderId;
sku.ImgUrl = "http://img11.360buyimg.com/n1/" + src;
sku.Title = title;
sku.Cat = cat;
sku.ShopId = shopId;
sku.VenderId = vid;
GetWareBusiness(sku);
Debug.WriteLine($"{skuId}采集完成!{DateTime.Now}");
Thread.Sleep(2000);
}
catch
{
}
});
}
catch(Exception ex)
{
}
Thread.Sleep(1000);
}
watch.Stop();
Debug.WriteLine("100页全面采集花费:" + watch.ElapsedMilliseconds + "毫秒!!!");
}
private string _InitText= "正在加载慧眼竞品商品数据, 请稍后...";
@ -893,7 +972,7 @@ namespace JdShopListener
string html = http.GetStringAsync($"https://item.jd.com/{skuId}.html").Result;
if (html.Contains("passport.jd.com/new/login.aspx")|| html.Contains("//item.jd.com/html/token.html?returnUrl="))
if (html.Contains("passport.jd.com/new/login.aspx")|| html.Contains("//item.jd.com/html/token.html?returnUrl=" )|| html.Contains("passport.jd.com/uc/login"))
{
AddLog("登录失效,触发验证!!重新尝试获取登录状态");
InitLoginCookie();
@ -1213,13 +1292,19 @@ namespace JdShopListener
var json= client.GetStringAsync(url).Result;
if (json.Contains("passport.jd.com/new/login.aspx"))
if (json.Contains("passport.jd.com/new/login.aspx") || json.Contains("passport.jd.com/uc/login"))
{
AddLog("登录失效,触发验证!!重新尝试获取登录状态");
InitLoginCookie();
return GetWareBusiness(model);
}
if (json.Length < 100)
{
}
json = json.Remove(0, "jQuery6834366(".Length);
json = json.Remove(json.Length - 1, 1);
@ -1228,6 +1313,67 @@ namespace JdShopListener
return data;
}
private List<string> GetSearchList(int page)
{
int pageSize = 25;
int s = (page - 1) * pageSize + 1;
string url = $"https://search.jd.com/s_new.php?keyword=%E9%9E%8B%E5%AD%90&wq=%E9%9E%8B%E5%AD%90&pvid=8c8009784e07405f944330cee2f375b3&page={page}&s={s}&click=0";
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("Cookie", JDCookie);
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0");
client.DefaultRequestHeaders.Add("Accept", "*/*");
client.DefaultRequestHeaders.Add("sec-ch-ua", @""" Not A;Brand"";v=""99"", ""Chromium"";v=""102"", ""Google Chrome"";v=""102""");
client.DefaultRequestHeaders.Add("sec-ch-ua-mobile", "?0");
client.DefaultRequestHeaders.Add("X-Requested-With", "XMLHttpRequest");
client.DefaultRequestHeaders.Add("sec-ch-ua-platform", @"""Windows""");
client.DefaultRequestHeaders.Add("Referer", "https://search.jd.com/Search?keyword=%E9%9E%8B%E5%AD%90&wq=%E9%9E%8B%E5%AD%90&pvid=8c8009784e07405f944330cee2f375b3&page=5&s=116&click=1");
/*
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36
sec-ch-ua-platform: "Windows"
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://search.jd.com/Search?keyword=%E9%9E%8B%E5%AD%90&wq=%E9%9E%8B%E5%AD%90&pvid=8c8009784e07405f944330cee2f375b3&page=5&s=116&click=1
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
*/
var json = client.GetStringAsync(url).Result;
if (json.Contains("passport.jd.com/new/login.aspx")||json.Contains("passport.jd.com/uc/login"))
{
AddLog("登录失效,触发验证!!重新尝试获取登录状态");
InitLoginCookie();
return GetSearchList(page);
}
Regex reg = new Regex(@"data-sku=""([0-9]{1,})""");
List<string> data = new List<string>();
var matchs= reg.Matches(json);
foreach (Match match in matchs)
{
if (match.Success)
{
data.Add(match.Groups[1].Value);
}
}
return data;
}
/// <summary>
/// 将时间戳转换为时间
/// </summary>

Loading…
Cancel
Save