唯品会 京东 淘宝 得物比价1.4.1,selenium登录后再隐藏浏览器

原创于本人微信公众号:阿嚏个技术

文章地址:Compareprice比价10月8日更新-增加京东优惠券凑单

        本次更新的版本为1.4.1,主要是增加了京东优惠券凑单页面的数据采集。该凑单页面需登录后才可以达到,软件会先打开京东登录页面:

通过京东app扫码或账号登录,登录京东。登录过程需要在2分钟内完成,超过2分钟后需重新点软件开始打开登录页面登录。(介意登录后是否对账号有影响的,建议别用该功能)

凑单的页面是从领取优惠券后跳转的页面,网址格式:https://search.jd.com/Search?coupon_batch=数字串:

把该网址存在excel中导入到软件中(注意:第一行是标题,从第二行开始录入网址,可以录入多个网址),excel支持xlsx和csv格式,不支持xls格式,建议使用csv格式。

本次代码实现上的记录:

软件通过selenium打开显示或隐藏浏览器主要设置option参数为headless进行控制

var options = new EdgeOptions();//options.BinaryLocation = System.Windows.Forms.Application.StartupPath + @"\msedge.exe";if (!showNavgator){    options.AddArgument("--headless");    options.AddUserProfilePreference("profile.default_content_setting_values.images", 2);}driver = new EdgeDriver(chromeDriverService, options);

以此获取的driver在打开登录页让用户进行登陆后,需要对后续的请求隐藏浏览器的操作。此时是无法在该对象上再通过options的设置来隐藏浏览器,需要将driver.Quit()后,重新初始化options再生成driver。但新生成的driver对象并没有保留之前登录的cookie,这就失去了保持登录状态的意义,因而需要先保留第一次driver获取的cookies值,然后在新的driver对象中添加之前登录的cookies。

                var cookies = driver.Manage().Cookies.AllCookies;                driver.Quit();                driver = null;                InitEdge(false);                driver.Navigate().GoToUrl("https://www.jd.com");                foreach (var cookie in cookies)                {                    driver.Manage().Cookies.AddCookie(cookie);                }

这里非常重要的地方是“driver.Navigate().GoToUrl("https://www.jd.com");”,如果跳过,直接执行后续的添加cookie语句,会出现异常“selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain”,因此需要先导航到一个页面,确定driver的域,再增加cookie就不会出异常。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值