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 客户生意比较好,因此比较忙,常常不在电脑前 ...
随机推荐
- JavaScript封装的几种方式
JS 对象封装的常用方式 JS是一门面向对象语言,其对象是用prototype属性来模拟的.来看看如何封装JS对象. 常规封装 function Person (name,age,sex){ this ...
- msp430 问题及解决记录
----------------------------- 2015.4.28 问题:开发板串口显示的内容为乱码 解决:使用的是原先产品主板的15200的波特率设置,但看来或者是开发板不支持11520 ...
- java 读取文件的常用方式
1.读取: public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public static void rea ...
- 四 主要的几种 Web 服务器
一 Microsoft IIS 1. 仅支持 Windows 操作系统,用于 .Net 平台网站的部署和运行. 2. IIS 是一种 Web 服务组件,包括括 Web 服务器.FTP 服务器.NNTP ...
- sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611。请将该数据库升级为最新版本。)
最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件,现在需要 附加到sqlserver2012,经过网上一顿搜索,把完整的过程奉上,供大家参考 首先创建数据库 再设置数据库的 ...
- 使用使用for in 语句,并对数组中元素进行了增删操作,报错却不知怎么办?
解决方案: 在forin遍历过程中不要对遍历数据进行修改, for in 的时候如果在操作内移除会打乱 他的count 导致出错,如果要修改尽量用for循环
- Codeforces Round #310 (Div. 2) A B C
A. Case of the Zeros and Ones time limit per test 1 second memory limit per test 256 megabytes input ...
- HDU 2089 数位dp/字符串处理 两种方法
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- leetcode 106 Construct Binary Tree from Inorder and Postorder Traversal----- java
Given inorder and postorder traversal of a tree, construct the binary tree. Note:You may assume that ...
- 如何卸载rpm包
首先通过 rpm -q <关键字> 可以查询到rpm包的名字 然后 调用 rpm -e <包的名字> 删除特定rpm包 如果遇到依赖,无法删除,使用 rpm -e --nod ...