2021年2月6日星期六

c#爬虫-1688官网自动登录

背景

在1688官网里面有很多信息是需要登录才能看得到的,比如商家的联系电话等等。那么我们在抓取它的网页的时候,肯定是需要维持登录状态才能得到对应的内容。这里面就会涉及到自动登录的问题。

登录地址

https://login.1688.com/member/signin.htm

图片

自动登录方法

1、找到对应的元素,账号、密码框。

图片

2、把账号、密码值带进去。

 List<string> logininfolist = new List<string>();    string file = "1688Account.json";    if (!File.Exists(file))    {     throw new ArgumentException("1688Account not found");    }    string data = File.ReadAllText(file, Encoding.UTF8);    var account1688list = JsonConvert.DeserializeObject<List<Account1688Item>>(data);    logininfolist.AddRange(account1688list.Select(o => o.AccountPassword).ToList());    Random rdinfo = new Random();    int indexinfo = rdinfo.Next(logininfolist.Count);    var modelinfo = logininfolist[indexinfo];    driver.FindElement(By.Id("fm-login-id")).SendKeys(modelinfo.Split('+')[0]);    driver.FindElement(By.Id("fm-login-password")).SendKeys(modelinfo.Split('+')[1]);

3、模拟点击提交按钮操作。

  // Thread.Sleep(1000 * 30); //30时间操作    driver.FindElement(By.ClassName("password-login")).Click();    Thread.Sleep(1000 * 30);//30时间操作

4、进入控制台,验证是否登陆成功。并记录Cookies,下次再来的时候,直接使用现成的Cookies,一般有效期可以维持一天多左右。

 driver.Navigate().GoToUrl("https://work.1688.com/?tracelog=login_target_is_blank_1688");    Thread.Sleep(1000 * 5);    if (driver.Url.Contains("login.1688.com"))    {     Console.WriteLine("登录失败");     CookieHelp.DeleteCookies();     Console.WriteLine("2");     throw new Exception("重新登录");    }    driver.Navigate().Refresh();    CookieHelp.WriteCookies(driver.Manage().Cookies.AllCookies);

5、判断是否有现成的登录cookies。

 driver.Navigate().GoToUrl("https://www.1688.com/");   driver.Manage().Cookies.DeleteAllCookies();   var listCookie = CookieHelp.GetCookie();   if (listCookie != null)   {    logintry = 0;    Console.WriteLine("有现成cookies" + DateTime.UtcNow);    foreach (var item in listCookie)    {     driver.Manage().Cookies.AddCookie(new Cookie(item.Name, item.Value, item.Domain, item.Path, item.Expiry));    }    Thread.Sleep(2000);    driver.Navigate().GoToUrl("https://work.1688.com/?tracelog=login_target_is_blank_1688");    Thread.Sleep(1000 * 2);

完整代码

 /// <summary>  /// 登录 todo  /// </summary>  /// <param name="_reptilesImageSearchService"></param>  /// <param name="options"></param>  /// <param name="driver"></param>  public void Implement(IReptilesImageSearchService _reptilesImageSearchService, IWebDriver driver)  {   driver.Navigate().GoToUrl("https://www.1688.com/");   driver.Manage().Cookies.DeleteAllCookies();   var listCookie = CookieHelp.GetCookie();   if (listCookie != null)   {    logintry = 0;    Console.WriteLine("有现成cookies" + DateTime.UtcNow);    foreach (var item in listCookie)    {     driver.Manage().Cookies.AddCookie(new Cookie(item.Name, item.Value, item.Domain, item.Path, item.Expiry));    }    Thread.Sleep(2000);    driver.Navigate().GoToUrl("https://work.1688.com/?tracelog=login_target_is_blank_1688");    Thread.Sleep(1000 * 2);    if (driver.Url.Contains("login.1688.com"))    {     Console.WriteLine("cookies过期了");     CookieHelp.DeleteCookies();     Console.WriteLine("1");     throw new Exception("重新登录");    }   }   else   {    if (logintry > 4)    {     Console.WriteLine("登陆次数超出:" + logintry);     throw new Exception("登陆次数超出,退出");    }    logintry++;    Console.WriteLine("无现成cookies" + DateTime.UtcNow);    driver.Navigate().GoToUrl("https://login.1688.com/member/signin.htm");    #region 登录动作    driver.SwitchTo().Frame(0);    IJavaScriptExecutor js = (IJavaScriptExecutor)driver;    // string returnjs = (string)js.ExecuteScript("Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});");    string jsfile = File.ReadAllText("stealth.min.js", Encoding.UTF8);    string returnjs = (string)js.ExecuteScript(jsfile);    List<string> logininfolist = new List<string>();    string file = "1688Account.json";    if (!File.Exists(file))    {     throw new ArgumentException("1688Account not found");    }    string data = File.ReadAllText(file, Encoding.UTF8);    var account1688list = JsonConvert.DeserializeObject<List<Account1688Item>>(data);    logininfolist.AddRange(account1688list.Select(o => o.AccountPassword).ToList());    Random rdinfo = new Random();    int indexinfo = rdinfo.Next(logininfolist.Count);    var modelinfo = logininfolist[indexinfo];    driver.FindElement(By.Id("fm-login-id")).SendKeys(modelinfo.Split('+')[0]);    driver.FindElement(By.Id("fm-login-password")).SendKeys(modelinfo.Split('+')[1]);    // Thread.Sleep(1000 * 30); //30时间操作    driver.FindElement(By.ClassName("password-login")).Click();    Thread.Sleep(1000 * 30);//30时间操作    

被迫退赛!杜兰特太不甘:一脸凝重不停摇头 紧咬球衣怒摔水瓶_比赛

原标题:被迫退赛!杜兰特太不甘:一脸凝重不停摇头 紧咬球衣怒摔水瓶

北京时间2月6日上午,布鲁克林篮网坐镇主场,迎来多伦多猛龙。上一场比赛,篮网强势战胜了洛杉矶快船,三巨头展现出了相当强的统治力。本场比赛,纳什也派出了熟悉的首发阵容,欧文、哈登、杜兰特、乔·哈里斯和小乔丹。

但是,由于联盟的健康与安全协议,凯文·杜兰特无法首发出战,纳什也是被迫将布鲁斯·布朗移到首发。好在首节比赛还剩4分钟,杜兰特回到替补席,并且正常出场,这也是杜兰特职业生涯的第一次替补!

能够出场,杜兰特表情轻松,露出了笑容。

但是,下半场比赛开始不久,杜兰特就吃到了个人第五次犯规,阿杜相当紧张。

好在纳什主动挑战,裁判撤销了此前的判罚,杜兰特也终于平静下来,露出了微笑。

剧情就是这么跌宕起伏。接下来,坐在场边的杜兰特,接到了工作人员的通知,因为联盟的安全健康协议,他被迫离场,并且,本场比赛不会回归。

杜兰特的数据停留在了出场19分钟,8中3,得到8分6篮板5助攻。得知自己不得不退赛,杜兰特不停摇头表情凝重,咬紧嘴唇,阿杜站起身,咬住球衣一脸不甘。

走进球员通道前,杜兰特狠狠摔了水瓶。生涯首次替补出场,还是以这样的方式结束,实在太过戏剧化。返回搜狐,查看更多

责任编辑:

原文转载:http://sport.shaoqun.com/a/393738.html

跨境电商:https://www.ikjzd.com/

1淘网:https://www.ikjzd.com/w/1698

邮政电话:https://www.ikjzd.com/w/202


原标题:被迫退赛!杜兰特太不甘:一脸凝重不停摇头紧咬球衣怒摔水瓶北京时间2月6日上午,布鲁克林篮网坐镇主场,迎来多伦多猛龙。上一场比赛,篮网强势战胜了洛杉矶快船,三巨头展现出了相当强的统治力。本场比赛,纳什也派出了熟悉的首发阵容,欧文、哈登、杜兰特、乔·哈里斯和小乔丹。但是,由于联盟的健康与安全协议,凯文·杜兰特无法首发出战,纳什也是被迫将布鲁斯·布朗移到首发。好在首
马士基航运:马士基航运
亚马逊礼品卡:亚马逊礼品卡
重磅!亚马逊股价首次站上3000美元大关:重磅!亚马逊股价首次站上3000美元大关
纯干货附网盘!速卖通运费模板的设置思路和技巧!:纯干货附网盘!速卖通运费模板的设置思路和技巧!
(精品分析)亚马逊美国站夜灯类目市场调查数据报告:(精品分析)亚马逊美国站夜灯类目市场调查数据报告

【SEO vs PPC】谁才是独立站流量扛把子?

为了帮大家提升流量,店小匠已经讲过很多有关独立站 SEO(搜索引擎优化)和 PPC(付费点击广告)的内容。没错,它们都能让你的网站获得更多的流量,且都需要花费一定的时间成本和相应的金钱支出。

那么,如何利用低成本、协调使用 SEO 和 PPC ,实现最佳 ROI 和流量提升效果呢?

SEO vs PPC 异同点:  

1、SEO 概述 :将与消费者相关性更大的、有用的、信息量大的内容按合理顺序编辑在网页中。之后随着搜索引擎爬虫索引和消费者搜索,商家的独立站就会出现在搜索结果中啦!所带来的流量是免费的,也被称为自然流量。

并且,即使 SEO 暂停维护一段时间也没关系,流量依然能持续进来。

(SEO优化产生的持续性流量)

2、PPC 概述:PPC 是一种按点击效果付费的广告形式。独立站商家可以通过在广告平台直接竞价实现快速提升排位,从而获得更多曝光,更多流量——创建广告活动和投标关键字,当消费者的搜索内容包含这些关键词时,就会触发PPC 广告,独立站就会出现在搜索页面顶部、促进点击和流量。

目前不仅是 Google,大多社交媒体,比如:Facebook、Twitter、Quora 等,也已将 PPC 作为其主要商业模式。

// 共同点:

  • 都依赖于「关键词」,且通常有相同关键词;

  • 都是围绕着消费者「搜索意图」而设计的;

  • 都受到搜索引擎的算法更新、服务变更及政策变化的影响。

// 不同点:

  • 有些消费者对 PPC 付费广告信任度较低,即使会进入同一个网站,他们也不会点击;

  • 如果消费者还在搜寻了解信息、尚未准备好购买,他们点击 PPC 广告的可能性会略低一些;

  • 当消费者有较强购买意愿时,PPC 广告更有可能起作用;

  • PPC 广告按点击付费,有时热门关键词竞价可能十分昂贵;

  • SEO 在成本看来是"免费的",但需要较多时间和人力投入到研究、优化和内容创建工作中;

  • PPC 效果是短期内的,一旦广告计划结束或预算用完,排名也就不再领先,而 SEO 搜索引擎优化可以带来持续的长期效果。

(不同的 SERP 排名显示效果)

SEO vs PPC 如何侧重使用? 

店小匠发现,不同市场定位、产品属性或品牌特点的独立站商家,在 SEO 和 PPC的流量策略上会有不同侧重。这是因为:二者的引流特点的确有很大差别。



1、// SEO——缓慢而稳定

一些独立站商家更关注 SEO 搜索引擎优化,是因为:

  • 他们需要持续、稳定的流量,而不是基于竞价广告在短时间内的爆发流量;

  • 他们需要建立品牌知名度、长期品牌声誉;

  • 产品的销售周期较长,需要广泛研究。

店小匠说简单点:SEO 被用于价格高昂的产品,比如:电脑,手机,相机,汽车等。因为对大多数消费者来说,这些产品价格高、是巨大的开支,消费者在决定购买之前会进行广泛的研究。

另外,内容驱动类的独立站商家会大量部署 SEO 策略。比如:更多 Blog 文章、丰富的产品资讯、用户评论等内容。用合理的 SEO 策略布局内容,可以引来更多的精准流量,也更容易长期占据更高的搜索排名。

2、// PPC:速度与激情

但如果你的独立站有以下需要,店小匠建议侧重 PPC 广告可能效果更好:

  • 设置消费人群定位,想对精准群体群更多展示;

  • 马上获得流量;

  • 适合开展再营销,快速召回回头客;

  • 季节性产品、促销信息、折扣和新产品发布信息;

  • 消费者无需过多研究对比,可以快速下单的品类;

  • 商品具有高利润率或高 CLV(消费者终身价值),能确保商家独立站收入能够远远超过 PPC 广告成本。

据《搜索引擎杂志》研究报道,目前运用 PPC 广告最多的行业和品类包括:服装、个人护理、小家电、礼品、业余爱好和休闲、艺术娱乐产品、健康产品和房地产。

店小匠提醒你:重点在于识别消费者的购买意向搜索关键词。一旦"切中要点",可以实现更好 PPC 广告效果、有效带动独立站流量和转化。

SEO + PPC 两全其美! 

SEO 优化和 PPC 广告都能驱动 Google 搜索流量提升,且关键词可以相互参考,将二者结合使用可以产生"1+1大于2"的新优势。方法及效果包括:

  • 双管齐下,提升总体流量;

  • 对消费者来说,如果在两个位置都看到了你的独立站链接,能有效提高好感度和信任度,帮助塑造独立站品牌形象;

  • 分工布局、策略有机结合,降低成本:在布局高效的 PPC 广告内容同时,将那些价格高但仍然重要的关键词布局在 SEO 中,起到补充效果;

  • 利用 PPC 广告做快捷的 A/B 测试、积累效果数据,将分析结果和经验融入 SEO 策略中;

  • 结合使用,在 SERP 搜索页面中,占据更长久的有效排名。

店小匠提醒你:SEO 和 PPC 不可割裂来看,而那些提供优质服务、客单价更高的独立站商家,可以在同样策略下,实现更高转化率和精准流量沉淀。并且,随着时间和数据积累,优化策略也会越来越精准有效!



文章来源:https://www.ikjzd.com/home/142001

跨境电商:https://www.ikjzd.com/

askme:https://www.ikjzd.com/w/2459

邮乐网购物商城:https://www.ikjzd.com/w/1776

黄远:https://www.ikjzd.com/w/1785

【SEO vs PPC】谁才是独立站流量扛把子?

为了帮大家提升流量,店小匠已经讲过很多有关独立站SEO(搜索引擎优化)和PPC(付费点击广告)的内容。没错,它们都能让你的网站获得更多的流量,且都需要花费一定的时间成本和相应的金钱支出。那么,如何利用低成本、协调使用SEO和PPC,实现最佳ROI和流量提升效果呢?一:SEOvsPPC异同点:1、SEO概述:将与消费者相关性更大的、有用的、信息量大的内容按合理顺序编辑在网页中。之后随着搜索引擎爬虫索

后悔拒绝湖人了吗?31岁总冠军控卫伤势严重 美媒:将就此退役_德拉维多瓦

原标题:后悔拒绝湖人了吗?31岁总冠军控卫伤势严重 美媒:将就此退役

有时候,一个二选一的抉择,很可能改变他未来的命运。

去年11月,著名NBA记者马克·斯特恩曾透露,湖人希望把球队的最后一个席位留给德拉维多瓦,但是,德拉的选择却是克利夫兰骑士。

对于这个选择,外界普遍的解读是湖人需要一名外线的防守悍将,虽然可能是球队的第三控卫,但当湖人对阵拥有后场超巨的球队时,德拉维多瓦的作用就可以得到体现。

而德拉维多瓦最终的决定是和骑士达成了续约,新合同仅仅是一年老将底薪。这样的合同湖人完全也给得起,为什么德拉要选择骑士呢?

或许,德拉认为自己可以出任替补控卫,有更多的机会展示自己,以便在赛季结束后获得更大的合同。

然而,天算不如人算,美国媒体The Athletic援引多名消息人士的说法,德拉维多瓦很可能选择退役!

1990年出生的德拉维多瓦今年也不过只有31岁,为何他很可能会退役呢?

又回到开头的选择命题,加盟骑士后,德拉维多瓦在去年12月12日的季前赛遭遇严重脑震荡,不仅至今无法比赛,而且还无法训练。如果德拉当初选择加盟的是洛杉矶湖人,或许,也就不会出现如此严重的伤病了。

德拉维多瓦来自澳大利亚,2013年参加选秀大会却无人问津。选秀大会结束后,骑士骑士和他签下了一份为期两年总计130万美元的部分保障合同。凭借着防守端的表现,合同到期后,骑士和他续约一年,年薪120万

这一次的续约,让德拉维多瓦受益颇深,15-16赛季,德拉维多瓦和詹姆斯等队友一起,为骑士捧得了总冠军的奖杯。

凭借着撕咬式的防守,德拉维多瓦在获得冠军后和雄鹿达成了4年3800万美元的合同,在雄鹿的首个赛季,德拉维多瓦还是合格的替补控卫,但第二个赛季开始,德拉就跌出了轮转阵容。2018年12月8日,德拉维多瓦被雄鹿队交易回骑士队。

没想到的是,德拉维多瓦兜兜转转回到了梦开始的地方,却也因为一场季前赛,很可能直接断送自己的职业生涯,着实可惜。返回搜狐,查看更多

责任编辑:

原文转载:http://sport.shaoqun.com/a/393736.html

跨境电商:https://www.ikjzd.com/

aicpa:https://www.ikjzd.com/w/1373

jpgoodbuy:https://www.ikjzd.com/w/1553


原标题:后悔拒绝湖人了吗?31岁总冠军控卫伤势严重美媒:将就此退役有时候,一个二选一的抉择,很可能改变他未来的命运。去年11月,著名NBA记者马克·斯特恩曾透露,湖人希望把球队的最后一个席位留给德拉维多瓦,但是,德拉的选择却是克利夫兰骑士。对于这个选择,外界普遍的解读是湖人需要一名外线的防守悍将,虽然可能是球队的第三控卫,但当湖人对阵拥有后场超巨的球队时,德拉维多瓦的作用就可以得到体现。
mail.ru:mail.ru
c2c:c2c
数据报告|东南亚女性群体消费趋势洞察报告(上) 跨境知道:数据报告|东南亚女性群体消费趋势洞察报告(上) 跨境知道
中美两国政府出手打假:这几个电商平台将是重点打击对象:中美两国政府出手打假:这几个电商平台将是重点打击对象
传数万亚马逊VC卖家将被清洗,亚马逊:"这是在凭空造谣":传数万亚马逊VC卖家将被清洗,亚马逊:"这是在凭空造谣"

2021年2月5日星期五

Spring常用注解

 

Spring常用注解

本文枚举一些常用的SpringBoot开发注解,希望能帮助读者在SpringBoot开发中正确地使用注解。

@Spring Application

主程序注解,spring框架的main函数自带注解。一般不需要开发人员操作,Spring Initializer会写好。

@Controller

标注控制器类,控制器中的方法可以返回一个视图,在Web开发中一般使用的少(主要是用@RestController)。

@ResponseBody

@Controller+@ResponseBody=@RestController

因为SpringBoot已经封装了@RestController,所以一般不需要使用上面等式左边的方式(好比茴字的四种写法),我个人认为不需要花时间学习。

@RequestBody

@PostMapping中会再次介绍。将json解析为java对象。

使用场景:json传参

@RequestMapping

@RequestMapping("url"),用来将请求映射到方法。

在实际开发中,在具体的控制器类之前添加该注解即可。

@RequestParam

用来获取url中?后的参数。

public void searchById(@RequestParam(value ="id", required = true, defaultValue = "0")int id){
// required, defaultValue不写也可以
...
}

使用场景:URL传参

@PathVariable

同样是从URL中获得参数,方式和@RequestParam不一样。

@RequestMapping("/user/{id}")
public void searchById(@PathVariable(required = true)int id){
...
}

使用场景:URL传参

@RestController

作用=@Controller+@ResponseBody,返回json格式数据。现在Web开发中的Controller一般都是RestController。

一般和@RequestMapping、@GetMapping、@PostMapping配合使用。

使用方法:

@RequestController
public class RestController {
...
}

@GetMapping

响应GET请求。

@RequestController
@RequestMapping("rest")
public class RestController {
 @GetMapping("get") // >public String get(){
   return "";
}
}

@GetMapping可以使用@PathVariable、@RequestParam

@PostMapping

响应POST请求。

@RequestController
@RequestMapping("rest")
public class RestController {
 @PostMapping("post") // >public String post(@RequestBody User user){
   return "";
}
}

一般来说,POST方法的传参不受限制,可以使用URL传参,也可以使用@RequestBody获取请求体中的json,并解析为响应的java对象。

POST方法和GET方法可以共用一个URL,不用担心起冲突,即下面的使用方式是OK的:

@RequestController
@RequestMapping("rest")
public class RestController {
 @GetMapping
 public String get(){
   return "";
}
 @PostMapping
 public String post(@RequestBody User user){
   return user.toString();
}
}
// 不会冲突,只要请求方法正确(正确使用GET、POST),就能被正确的方法响应。

@PutMapping、@DeleteMapping使用方式大同小异,其实从功能上来说,@PostMapping能替代所有的请求,但是这么使用会导致代码语义混乱

简单说明一下各种请求方法的使用场景:

方法场景
GET获取资源
POST新增资源
PUT更新资源
DELETE删除资源

@CrossOrigin

用来解决跨域问题,何为跨域移步这里

在Blog中,博主给了跨域的详细例子:

当前页面url被请求页面url是否跨域原因
同源(协议、域名、端口号相同)
https://www.test.com/index.html跨域协议不同(http/https)
跨域主域名不同(test/baidu)
跨域子域名不同(www/blog)
跨域端口号不同(8080/7001)

(上表来自链接博文)

关于AJAX跨域问题移步这里

@RequestController
@RequestMapping("rest")
public class RestController {
 @PostMapping
 @CrossOrigin
 public String post(@RequestBody User user){
   return user.toString();
}
}
//跨域问题解决

@Service

Controller中一般是不写逻辑的,都是直接调用相应的服务,我们需要吧业务逻辑封装在服务中。

上面的例子只是为了方便才把逻辑写入控制器,实际开发中不要图这种方便。

@Service用来注册bean,要放在服务的实现类之前。

接下来使用UserService做例子。这是一个接口。

// 接口类
public class UserService {
 public ResponseVO addUser(User user);
}
// 实现类

@Service // 一定是在实现类而非接口类中
public class UserServiceImpl implements UserService {
 
public ResponseVO addUser(User user){
   // implement the interface
}
}
// 控制器类
public class UserController {
 @Autowired
 private UserService userService;
}

一般在控制器类中,又一个Service成员,在这个例子中便是private UserService userService

我们当然可以选择:

private UserService userService = new UserServiceImpl();

但是SpringBoot提供了更方便的做法:

@Autowired
private UserService userService;

只要实现类被正确的标注,那么@Autowired就能帮我们完成初始化任务。

关于Autowired的进一步介绍移步@Autowired

@Component

@Component和@Service非常类似,同样用来注册bean,使用方式也是一样的,区别在二者的使用场景。

@Service用于注解业务逻辑层中的服务代码,@Component用于注解通用性强的工具类(会被多方调用)。

例如:

  1. 既被控制器调用,又被服务实现类调用的类

  2. 被多个控制器/服务实现类调用的类

@Autowired

@Autowired用来获取bean。

在SpringBoot中,默认的匹配方式是byType,具体规则如下:

  1. 按照类型去容器找到对应的组件

    如果找到:赋值

    如果没找到:报异常

    如果找到多个:使用变量名作ID匹配,匹配上就赋值,没有就报错。

    这里说明一下:ID即为类名的首字母小写,例如UserServiceImpl类的ID就是userServiceImpl

  2. 可以使用@Qualifier注解指定ID

例子:

  1. 使用变量名作ID匹配

@Autowired
private UserService userService;

查找到多个相同的类:UserService(id = userService)及其子类UserServiceExtend(id = userServiceExtend)

这时,使用userService作id匹配到UserService类。

  1. 使用@Qualifier指定id

@Autowired
@Qualfier("adminServiceImpl")
private UserService userService; // private UserService userService = new AdminServiceImpl();
...

...
public class AdminServiceImpl implements UserService{
...
}
  1. required=false

    @Autowired是默认required=true的,设为false找不到就不会报错,而是置为null。

@Resource

没有@Autowired的按类匹配机制,但是可以指定name

@Resource(adminServiceImpl)
private UserService adminService;
...

public class AdminServiceImpl implements UserService{
...
}

功能基本被@Autowired覆盖。

@Resource(name = id) = @Qualifier(id) + @Autowired

除了利用上面这个等式缩减代码,我想不到别的使用场景。

@Configuration + @Beans

这俩是一起使用的,可以人为注册Bean,替代@Service和@Component

@Configuration
public class Beans{
 @Bean
 public UserService userServiceImpl(){
   return new UserServiceImpl();
}
 @Bean
 public UserService adminServiceImpl(){
   return new AdminServiceImpl();
}
}

// UserController.java
@Resource(name=adminServiceImpl)
private UserService adminService;

@Resource(name=userServiceImpl)
private UserService userService;

说实话比较鸡肋的功能......反正了解就好。

@Value

还差一口气就看完了。

@Value用来从配置文件(.properties/.yaml/.yml)中取参数。

例如:

# application.properties

local.name = crx
@Value("${local.name}")
private String author;

一般只有一些账户密码数据需要使用该功能。

 

常用注解到这里就介绍完了,最后说一句,实操才是硬道理,要多练!









原文转载:http://www.shaoqun.com/a/530571.html

跨境电商:https://www.ikjzd.com/

邮政电话:https://www.ikjzd.com/w/202

gtin:https://www.ikjzd.com/w/136


Spring常用注解本文枚举一些常用的SpringBoot开发注解,希望能帮助读者在SpringBoot开发中正确地使用注解。@SpringApplication主程序注解,spring框架的main函数自带注解。一般不需要开发人员操作,SpringInitializer会写好。@Controller标注控制器类,控制器中的方法可以返回一个视图,在Web开发中一般使用的少(主要是用@RestCon
bap:bap
logo免费制作:logo免费制作
亚马逊语音助手购物潮流来了?今年圣诞用 Alexa 买礼物的人翻了两倍:亚马逊语音助手购物潮流来了?今年圣诞用 Alexa 买礼物的人翻了两倍
亚马逊CPC常见问题答疑:亚马逊CPC常见问题答疑
亚马逊获取核心关键词的各种渠道:亚马逊获取核心关键词的各种渠道

春节店铺广告怎么投? 3种策略带飞

春节店铺广告怎么投? 3种策略带飞

春节倒计时,空气里弥漫着浓烈的"过年"气息。不少卖家朋友都在进行过年安排,小编在后台也收到很多私信:

春节除了中国大陆会放假之外,台湾、新加坡、马来西亚、越南、印尼、菲律宾、泰国7大市场也会有时长不等的春节假期,假期期间买家购物热情高涨,市场需求不减。在做好店铺假期安排的情况下,为了进一步保持广告投放不断流,我们强烈建议您,一定要继续投放广告!

针对不同类型的店铺,我们为各位整理出了三种不同的广告投放策略:

春节期间大多数SLS店铺暂停发货,广告竞争减小,海外仓物流时效和发货优势更为明显,因此海外仓卖家应把握春节红利期,提前充值充足广告金,提高广告预算,争取曝光机会。

而店铺内销量高的商品,请记得一定要开启广告,并将预算提高至平日1.5-2倍。而此前未开过广告的中腰部商品,建议同时开启广告,辅助店铺争夺春节流量哦!

小编推荐可以配合使用关键字广告、关联广告和商店广告,全方位收割流量,坐在家里也能赚钱!

春节期间广告调整主要以提高曝光和出单为主,建议三天查看一次广告情况,关键字广告可以投放大词,适当提高出价,以获取更多流量~

若店铺在春节期间延长了发货时间(DTS)或开启预售,买家能正常下单,我们可以按照下面列出的三个时间点,持续投放广告,别忘了适当控制预算哦:

建议根据店铺广告花费情况提前充值广告金,保证春节期间广告账户中有足够的余额:


考虑到春节期间店铺运营人手和时间不足,卖家可适当降低广告预算至平日的70%-80%,只保留店内销量较好的产品投广告,暂停测品,同时开启智能广告工具——关键字广告自动选择功能和关联广告,省时省力,操作简单!

值得一提的是,这期间广告调整建议以维稳为主,三天查看一次广告情况,观察店铺广告金是否断线,若断线请及时充值,可以使用广告后台余额充值,轻松充值实时到账。

广告预算可恢复至放假前正常水平,帮助店铺单量回升;同时回顾春节期间广告数据,进行精细化调整。重点优化春节期间高加购、高转化的广告产品。

别忘了利用广告测试新品,每周测试20款新品左右,为年后爆单打下基础!

*注:文中春节前、春节期间、恢复正常发货后,没有特定时间段,可视您店铺具体情况而定。

同时2月广告金充值有好礼,新老用户都可以看过来啦!活动期间 (2021.02.1 - 02.28),最高可获得50%返点奖励哦~

注:首笔充值金额达任意档位要求,则可获得对应档位奖励,奖励以广告金的形式于2021年3月月初发放至账户中。

注:累计充值金额达任意档位要求,则可获得对应档位奖励,奖励以广告金的形式于2021年3月月初发放至账户中。

若店铺在春节期间调整库存为0或开启休假模式,此时买家无法正常下单,投放广告转化率差,因此小编建议暂停广告投放哦。

假期结束,恢复正常运营后,记得及时恢复广告投放,帮助店铺快速恢复流量和订单,迎接一个牛年!

最后,小编给各位卖家拜个早年,希望明年继续和大家一起"牛"转"钱"坤!Shopee,成就每一种出海可能!

已入驻Shopee的卖家可联系您的客户经理获得更多信息。

(来源:Shopee跨境电商)

文章来源:https://www.ikjzd.com/home/141990

跨境电商:https://www.ikjzd.com/

联动优势:https://www.ikjzd.com/w/1921

新蛋:https://www.ikjzd.com/w/79

全球速卖通:https://www.ikjzd.com/w/81

春节店铺广告怎么投? 3种策略带飞

春节倒计时,空气里弥漫着浓烈的"过年"气息。不少卖家朋友都在进行过年安排,小编在后台也收到很多私信: