亚马逊模拟登陆,这里使用的是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后台登陆以及跟卖的更多相关文章

  1. DEDE首页会员部分,后台登陆,会员登录相关页面

    首页会员涉及部分 \templets\default\style\page.css \member\ajax_loginsta.php 会员登录页面涉及部分 \member\templets\inde ...

  2. phpcms v9后台登陆验证码无法显示,怎么取消验证码

    phpcms v9后台登陆验证码无法显示论坛里关于这个问题貌似一直没有解决,查看源代码后发现,关键一点是获取验证码的图片与全局变量SITE_URL相关,也就是网站的目录, 所以只要修改cache/co ...

  3. ecstore 后台登陆跳转到 api失败,中心请求网店API失败

    解决过程没有具体参与,官方解决后回复的邮件,可以参考一下: 后台登陆错误图:   商派解决方法邮件:   特别注意:这个错误提示有时候也跟ecstore的nginx服务器伪静态有关,具体参考: htt ...

  4. dede后台登陆后一片空白的解决办法汇总

    dede后台登陆后一片空白的第一种解决办法: 找到:include/common.inc.php文件,打开,查找程序代码://error_reporting(E_ALL);error_reportin ...

  5. 为wordpress后台登陆添加算术验证码

    对于新建站(个人博客-柠檬https://ninmong.com)的站长来说提高后台的安全性,是一件非常重要的事,添加验证可以起到很好的效果,废话少说,贴代码 //后台登陆数学验证码 function ...

  6. [nodejs] nodejs开发个人博客(七)后台登陆

    定义后台路径 访问这个路径进入后台页面 http://localhost:8888/admin/login 在后台路由控制器里面(/admin/index.js)调用登陆控制器(/admin/logi ...

  7. 关于dede后台登陆后一片空白以及去除版权

    今天家里的电脑上新装DEDE5.7后台登陆后竟然一片空白,装PHPCMS却没有问题.百度了好久,也没找到一个像样的答案,晕死! 看了源码后发现在源码里的类库中很多都是PHP4的语法,var这个函数在P ...

  8. thinkcmf 忘记后台登陆密码的解决办法

    thinkcmf 忘记密码 或者 密码错误 如何修改后台登陆密码? 直接在后台登陆控制器里输入 dump(cmf_password('123456')); 参考文件路径 app\admin\contr ...

  9. ECSHOP后台登陆后一段时间不操作就超时的解决方法

    ECSHOP后台登陆后一段时间不操作就超时的解决方法 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2012-05-27   客户生意比较好,因此比较忙,常常不在电脑前 ...

随机推荐

  1. 学习php前需要了解的知识

    1.静态网站与动态网站 A)静态网站: 不支持数据交互的网站(后缀:   .html  .htm) B)动态网站: 支持数据交互的网站,动态网站可以放静态网页的 i.实现动态网站的技术 1.Asp   ...

  2. 【Tsinghua OJ】灯塔(LightHouse)问题

    描述 海上有许多灯塔,为过路船只照明.从平面上看,海域范围是[1, 10^8] × [1, 10^8] . (图一) 如图一所示,每个灯塔都配有一盏探照灯,照亮其东北.西南两个对顶的直角区域.探照灯的 ...

  3. 【LEETCODE OJ】Single Number II

    Problem link: http://oj.leetcode.com/problems/single-number-ii/ The problem seems like the Single Nu ...

  4. C# 封装一个钩子类

    利用C#设置钩子函数,并封装成类.如果想要实现全局钩子的话,必须将实现的代码封装到类库里. using System; using System.Collections.Generic; using ...

  5. 让所有浏览器包括IE6即支持最大宽度又支持最小宽度。

    让所有浏览器包括IE6即支持最大宽度又支持最小宽度. _height  _width:针对ie6 css hack .yangshi{max-width:620px;min-width:1px;_wi ...

  6. Smart210学习记录------块设备

    转自:http://bbs.chinaunix.net/thread-2017377-1-1.html 本章的目的用尽可能最简单的方法写出一个能用的块设备驱动.所谓的能用,是指我们可以对这个驱动生成的 ...

  7. 怎么用jquery判断浏览器类型和版本号?

    用jquery判断浏览器类型:判断浏览器类型是IE浏览器还是火狐甚至是opera或者苹果浏览器safari,jquery 特效代码如下:判断浏览器类型和版本号如下: 怎么用jquery判断浏览器类型? ...

  8. js prototype新感悟

    prototype是js的一个原型属性,这个属性可以创建对象属性和方法. 子类继承原型属性时,会继承父类的原型属性和方法. prototype只能作用到类上,不能作用到对象上. ----------- ...

  9. timeZoneGetter

    function timeZoneGetter(date) { // getTimezoneOffset 返回格林威治时间和本地时间之间的时差,以分钟为单位 var zone = -1 * date. ...

  10. dede文章摘要字数的设置方法

    本文转自:http://blog.csdn.net/yxwmzouzou/article/details/17491991 在织梦系统中(针对5.7版本),文章摘要(可以通过以下四种相关标签调用)被设 ...