Amazon后台登陆以及跟卖
亚马逊模拟登陆,这里使用的是selenium来登陆,并判断是否登陆成功,以及是否有验证码,并破解验证码登陆。
跟卖主要解决的难题是selenium的新窗口弹出问题,在
# 点击“出售您的”
browser.find_element_by_id("a-autoid-2-announce").click()
会弹出一个新的标签页,而browser还是定位在原来的标签页,所以要对标签页进行切换,这里是用到了句柄:
# 获得当前打开所有窗口的句柄handles
# handles为一个数组
handles = browser.window_handles
# print(handles)
# 切换到当前最新打开的窗口
browser.switch_to_window(handles[-1])
# 输出查看当前窗口的句柄
# 看看是否切换成功
# print(browser.current_window_handle)
# input("是否切换成功...")
最终的跟卖代码如下:
# !/usr/bin/python3.4
# -*- coding: utf-8 -*- from selenium import webdriver
import random
from selenium.webdriver.support.select import Select
import time # 打开浏览器并跟卖
def openbrowser(url):
global browser # 打开谷歌浏览器
# Firefox()
# Chrome()
browser = webdriver.Chrome()
# 输入网址
browser.get(url)
# 打开浏览器时间
# print("等待10秒打开浏览器...")
# time.sleep(10) # 找到id="ap_email"的对话框
# 清空输入框
browser.find_element_by_id("ap_email").clear()
browser.find_element_by_id("ap_password").clear() # 输入账号密码
# 输入账号密码
account = []
try:
fileaccount = open("../sellYours/account.txt")
accounts = fileaccount.readlines()
for acc in accounts:
account.append(acc.strip())
fileaccount.close()
except Exception as err:
print(err)
input("请正确在account.txt里面写入账号密码...")
exit()
browser.find_element_by_id("ap_email").send_keys(account[0])
browser.find_element_by_id("ap_password").send_keys(account[1]) # 点击登陆sign in
# id="signInSubmit"
print("等待网址加载完毕...")
browser.find_element_by_id("signInSubmit").click() # 等待登陆10秒
# print('等待登陆10秒...')
# time.sleep(10) select = input("请观察浏览器网站是否已经登陆(y/n):")
while 1:
if select == "y" or select == "Y":
print("登陆成功!") # 成功登陆后跳出该循环
break elif select == "n" or select == "N":
selectno = input("账号密码错误请按0,验证码出现请按1...")
# 账号密码错误则重新输入
if selectno == "": # 找到id="ap_email"的对话框
# 清空输入框
browser.find_element_by_id("ap_email").clear()
browser.find_element_by_id("ap_password").clear() # 输入账号密码
account = []
try:
fileaccount = open("../sellYours/account.txt")
accounts = fileaccount.readlines()
for acc in accounts:
account.append(acc.strip())
fileaccount.close()
except Exception as err:
print(err)
input("请正确在account.txt里面写入账号密码")
exit() browser.find_element_by_id("ap_email").send_keys(account[0])
browser.find_element_by_id("ap_password").send_keys(account[1])
# 点击登陆sign in
# id="signInSubmit"
print("等待网址加载完毕...")
browser.find_element_by_id("signInSubmit").click() elif selectno == "":
# 验证码的id为id="ap_captcha_guess"的对话框
input("请在浏览器中输入验证码并登陆...")
select = input("请观察浏览器网站是否已经登陆(y/n):") else:
print("请输入“y”或者“n”!")
select = input("请观察浏览器网站是否已经登陆(y/n):") # return cookiestr def inputinfo(LoginWhere=0):
# 判断是美国还是日本
Loginurl = ""
if LoginWhere == 0:
Loginurl = "https://sellercentral.amazon.com/" elif LoginWhere == 1:
Loginurl = "https://sellercentral.amazon.co.jp/" asins = [] # 读取本地txt的asin
file = open("../sellYours/Asin.txt")
asininfos = file.readlines()
for item in asininfos:
asins.append(item.strip())
file.close() # 这里开始登陆
openbrowser(Loginurl)
time.sleep(5) for asin in asins:
print("跟卖Asin:" + str(asin)) # 不知道这样子的referer会不会有事
# 先测试一下子
url = "https://sellercentral.amazon.com/productsearch?q=" + str(asin)
# 输入网址
browser.get(url) # 防止未加载完成
time.sleep(5) # 点击“出售您的”
browser.find_element_by_id("a-autoid-2-announce").click() # 防止未加载完成
time.sleep(5) # 获得当前打开所有窗口的句柄handles
# handles为一个数组
handles = browser.window_handles
# print(handles)
# 切换到当前最新打开的窗口
browser.switch_to_window(handles[-1])
# 输出查看当前窗口的句柄
# 看看是否切换成功
# print(browser.current_window_handle)
# input("是否切换成功...") # 清空价格数量的输入框
browser.find_element_by_name("standard_price").clear()
browser.find_element_by_name("quantity").clear() # 防止未加载完成
time.sleep(1) # 随机生成price和quantity
price = str(random.randint(100, 200))
quantity = str(random.randint(30, 100)) # 填入价格和数量
browser.find_element_by_name("standard_price").send_keys(price)
browser.find_element_by_name("quantity").send_keys(quantity) # 定位到下拉框,选择new
sel = browser.find_element_by_xpath("//select[@id='condition_type']")
Select(sel).select_by_value('new, new') print("正在写入信息...")
# 防止未加载完成
time.sleep(5) # 点击save and finish
browser.find_element_by_id("main_submit_button").click() # 判断是否已经跟卖成功
input("看看是否跟卖成功...") # 关闭当前打开的新窗口
browser.close()
# 切换回搜索的那个窗口
browser.switch_to_window(handles[0]) if __name__ == "__main__":
# 抓取美国为0
# 抓取日本为1
inputinfo(LoginWhere=0)
Amazon后台登陆以及跟卖的更多相关文章
- DEDE首页会员部分,后台登陆,会员登录相关页面
首页会员涉及部分 \templets\default\style\page.css \member\ajax_loginsta.php 会员登录页面涉及部分 \member\templets\inde ...
- phpcms v9后台登陆验证码无法显示,怎么取消验证码
phpcms v9后台登陆验证码无法显示论坛里关于这个问题貌似一直没有解决,查看源代码后发现,关键一点是获取验证码的图片与全局变量SITE_URL相关,也就是网站的目录, 所以只要修改cache/co ...
- ecstore 后台登陆跳转到 api失败,中心请求网店API失败
解决过程没有具体参与,官方解决后回复的邮件,可以参考一下: 后台登陆错误图: 商派解决方法邮件: 特别注意:这个错误提示有时候也跟ecstore的nginx服务器伪静态有关,具体参考: htt ...
- dede后台登陆后一片空白的解决办法汇总
dede后台登陆后一片空白的第一种解决办法: 找到:include/common.inc.php文件,打开,查找程序代码://error_reporting(E_ALL);error_reportin ...
- 为wordpress后台登陆添加算术验证码
对于新建站(个人博客-柠檬https://ninmong.com)的站长来说提高后台的安全性,是一件非常重要的事,添加验证可以起到很好的效果,废话少说,贴代码 //后台登陆数学验证码 function ...
- [nodejs] nodejs开发个人博客(七)后台登陆
定义后台路径 访问这个路径进入后台页面 http://localhost:8888/admin/login 在后台路由控制器里面(/admin/index.js)调用登陆控制器(/admin/logi ...
- 关于dede后台登陆后一片空白以及去除版权
今天家里的电脑上新装DEDE5.7后台登陆后竟然一片空白,装PHPCMS却没有问题.百度了好久,也没找到一个像样的答案,晕死! 看了源码后发现在源码里的类库中很多都是PHP4的语法,var这个函数在P ...
- thinkcmf 忘记后台登陆密码的解决办法
thinkcmf 忘记密码 或者 密码错误 如何修改后台登陆密码? 直接在后台登陆控制器里输入 dump(cmf_password('123456')); 参考文件路径 app\admin\contr ...
- ECSHOP后台登陆后一段时间不操作就超时的解决方法
ECSHOP后台登陆后一段时间不操作就超时的解决方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2012-05-27 客户生意比较好,因此比较忙,常常不在电脑前 ...
随机推荐
- Java 集合源码解析(2):ListIterator
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情和股票一样红,还是学学 ListIterator 吧! ListIterator 根据官方文档介绍, ListIt ...
- 14、C#基础整理(函数)
函数 1.概念:是一个带有输入参数.输出参数.返回值的代码块. 2.写法: 修饰符 返回值类型 函数名(输入参数,输入参数) { 方法段 return 返回值; } 3.注释: (1)输入参数格式 ...
- VS2010命令行编译C#和VC项目
VS2010命令行编译C#和VC项目 VS2010命令行编译C#和VC项目 根据需要动态创建数据库字段后,需要动态创建或者调整页面,那就需要编译这些页面和后台文件.因此使用命令行编译将会非常方便,对于 ...
- 【转】3 Essential Sublime Text Plugins for Node & JavaScript Developers
原文转自:http://scottksmith.com/blog/2014/09/29/3-essential-sublime-text-plugins-for-node-and-javascript ...
- Rest文件上传
文件上传时传过来一个stream 代码如下: /// <summary> /// 上传文件 /// </summary> /// <param name="fi ...
- 四 GPU 并行编程的存储系统架构
前言 在用 CUDA 对 GPU 进行并行编程的过程中,除了需要对线程架构要有深刻的认识外,也需要对存储系统架构有深入的了解. 这两个部分是 GPU 编程中最为基础,也是最为重要的部分,需要花时间去理 ...
- Single Number-C++中的异或
Single Number Given an array of integers, every element appears twice except for one. Find that sing ...
- hdu 5207
题目大意:给定一组数,取两个数,使得gcd最大.分析:先nlogn预处理出105所有数的因子,然后用cnt数组计数给定数的因子个数,再找到最大的i,满足cnt[i]>=2,复杂度为nlogn.学 ...
- Educational Codeforces Round 15 A dp
A. Maximum Increase time limit per test 1 second memory limit per test 256 megabytes input standard ...
- tyvj1015 - 公路乘车 ——完全背包
题目链接:https://www.tyvj.cn/Problem_Show.aspx?id=1015 完全背包 #include <cstdio> #include <algorit ...