Amazon后台登陆以及跟卖

时间:2022-05-22 20:31:21

亚马逊模拟登陆,这里使用的是selenium来登陆,并判断是否登陆成功,以及是否有验证码,并破解验证码登陆。

跟卖主要解决的难题是selenium的新窗口弹出问题,在

# 点击“出售您的”
browser.find_element_by_id("a-autoid-2-announce").click()

Amazon后台登陆以及跟卖

会弹出一个新的标签页,而browser还是定位在原来的标签页,所以要对标签页进行切换,这里是用到了句柄:

# 获得当前打开所有窗口的句柄handles
# handles为一个数组
handles = browser.window_handles
# print(handles)
# 切换到当前最新打开的窗口
browser.switch_to_window(handles[-1])
# 输出查看当前窗口的句柄
# 看看是否切换成功
# print(browser.current_window_handle)
# input("是否切换成功...")

Amazon后台登陆以及跟卖

最终的跟卖代码如下:

 # !/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)