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("是否切换成功...")

 

 

最终的跟卖代码如下:

  1 # !/usr/bin/python3.4
  2 # -*- coding: utf-8 -*-
  3 
  4 from selenium import webdriver
  5 import random
  6 from selenium.webdriver.support.select import Select
  7 import time
  8 
  9 
 10 # 打开浏览器并跟卖
 11 def openbrowser(url):
 12     global browser
 13 
 14     # 打开谷歌浏览器
 15     # Firefox()
 16     # Chrome()
 17     browser = webdriver.Chrome()
 18     # 输入网址
 19     browser.get(url)
 20     # 打开浏览器时间
 21     # print("等待10秒打开浏览器...")
 22     # time.sleep(10)
 23 
 24     # 找到id="ap_email"的对话框
 25     # 清空输入框
 26     browser.find_element_by_id("ap_email").clear()
 27     browser.find_element_by_id("ap_password").clear()
 28 
 29     # 输入账号密码
 30     # 输入账号密码
 31     account = []
 32     try:
 33         fileaccount = open("../sellYours/account.txt")
 34         accounts = fileaccount.readlines()
 35         for acc in accounts:
 36             account.append(acc.strip())
 37         fileaccount.close()
 38     except Exception as err:
 39         print(err)
 40         input("请正确在account.txt里面写入账号密码...")
 41         exit()
 42     browser.find_element_by_id("ap_email").send_keys(account[0])
 43     browser.find_element_by_id("ap_password").send_keys(account[1])
 44 
 45     # 点击登陆sign in
 46     # id="signInSubmit"
 47     print("等待网址加载完毕...")
 48     browser.find_element_by_id("signInSubmit").click()
 49 
 50     # 等待登陆10秒
 51     # print('等待登陆10秒...')
 52     # time.sleep(10)
 53 
 54     select = input("请观察浏览器网站是否已经登陆(y/n):")
 55     while 1:
 56         if select == "y" or select == "Y":
 57             print("登陆成功!")
 58 
 59             # 成功登陆后跳出该循环
 60             break
 61 
 62         elif select == "n" or select == "N":
 63             selectno = input("账号密码错误请按0,验证码出现请按1...")
 64             # 账号密码错误则重新输入
 65             if selectno == "0":
 66 
 67                 # 找到id="ap_email"的对话框
 68                 # 清空输入框
 69                 browser.find_element_by_id("ap_email").clear()
 70                 browser.find_element_by_id("ap_password").clear()
 71 
 72                 # 输入账号密码
 73                 account = []
 74                 try:
 75                     fileaccount = open("../sellYours/account.txt")
 76                     accounts = fileaccount.readlines()
 77                     for acc in accounts:
 78                         account.append(acc.strip())
 79                     fileaccount.close()
 80                 except Exception as err:
 81                     print(err)
 82                     input("请正确在account.txt里面写入账号密码")
 83                     exit()
 84 
 85                 browser.find_element_by_id("ap_email").send_keys(account[0])
 86                 browser.find_element_by_id("ap_password").send_keys(account[1])
 87                 # 点击登陆sign in
 88                 # id="signInSubmit"
 89                 print("等待网址加载完毕...")
 90                 browser.find_element_by_id("signInSubmit").click()
 91 
 92             elif selectno == "1":
 93                 # 验证码的id为id="ap_captcha_guess"的对话框
 94                 input("请在浏览器中输入验证码并登陆...")
 95                 select = input("请观察浏览器网站是否已经登陆(y/n):")
 96 
 97         else:
 98             print("请输入“y”或者“n”!")
 99             select = input("请观察浏览器网站是否已经登陆(y/n):")
100 
101             # return cookiestr
102 
103 
104 def inputinfo(LoginWhere=0):
105     # 判断是美国还是日本
106     Loginurl = ""
107     if LoginWhere == 0:
108         Loginurl = "https://sellercentral.amazon.com/"
109 
110     elif LoginWhere == 1:
111         Loginurl = "https://sellercentral.amazon.co.jp/"
112 
113     asins = []
114 
115     # 读取本地txt的asin
116     file = open("../sellYours/Asin.txt")
117     asininfos = file.readlines()
118     for item in asininfos:
119         asins.append(item.strip())
120     file.close()
121 
122     # 这里开始登陆
123     openbrowser(Loginurl)
124     time.sleep(5)
125 
126     for asin in asins:
127         print("跟卖Asin:" + str(asin))
128 
129         # 不知道这样子的referer会不会有事
130         # 先测试一下子
131         url = "https://sellercentral.amazon.com/productsearch?q=" + str(asin)
132         # 输入网址
133         browser.get(url)
134 
135         # 防止未加载完成
136         time.sleep(5)
137 
138         # 点击“出售您的”
139         browser.find_element_by_id("a-autoid-2-announce").click()
140 
141         # 防止未加载完成
142         time.sleep(5)
143 
144         # 获得当前打开所有窗口的句柄handles
145         # handles为一个数组
146         handles = browser.window_handles
147         # print(handles)
148         # 切换到当前最新打开的窗口
149         browser.switch_to_window(handles[-1])
150         # 输出查看当前窗口的句柄
151         # 看看是否切换成功
152         # print(browser.current_window_handle)
153         # input("是否切换成功...")
154 
155         # 清空价格数量的输入框
156         browser.find_element_by_name("standard_price").clear()
157         browser.find_element_by_name("quantity").clear()
158 
159         # 防止未加载完成
160         time.sleep(1)
161 
162         # 随机生成price和quantity
163         price = str(random.randint(100, 200))
164         quantity = str(random.randint(30, 100))
165 
166         # 填入价格和数量
167         browser.find_element_by_name("standard_price").send_keys(price)
168         browser.find_element_by_name("quantity").send_keys(quantity)
169 
170         # 定位到下拉框,选择new
171         sel = browser.find_element_by_xpath("//select[@id='condition_type']")
172         Select(sel).select_by_value('new, new')
173 
174         print("正在写入信息...")
175         # 防止未加载完成
176         time.sleep(5)
177 
178         # 点击save and finish
179         browser.find_element_by_id("main_submit_button").click()
180 
181         # 判断是否已经跟卖成功
182         input("看看是否跟卖成功...")
183 
184         # 关闭当前打开的新窗口
185         browser.close()
186         # 切换回搜索的那个窗口
187         browser.switch_to_window(handles[0])
188 
189 
190 if __name__ == "__main__":
191     # 抓取美国为0
192     # 抓取日本为1
193     inputinfo(LoginWhere=0)

 

转载于:https://www.cnblogs.com/TTyb/p/6007252.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧云图书馆: 能支撑智慧图书馆服务体系的图书馆管理与服务平台。 平台优势 总分馆架构:不再是信息的孤岛,而是共享信息的平台。 友好的界面:通过简洁易用的平台界面,提高工作效率。 智能的平台:不仅仅是管理平台,更是智能的连接和服务平台。 服务大数据:拥有的不再是沉睡的数据,而是鲜活的知识金矿。 丰富的接口:灵活丰富强大的接口让一切皆有可能。 系统功能概述 总分馆架构 总分馆架构为一个树形结构。 根为顶层总馆,可以是一个虚拟单元,不涉及具体业务仅用于创建和管理它的直系分馆并制定统一规则。 每个图书馆都可创建和管理它的直系分馆,对于它的分馆们(互为兄弟馆),它是中心馆。 可以是多层(大于两层的)结构。 各馆有管理员账号,其管理员可创建多名不同角色用户,用于处理本馆不同业务。 系统管理 管理馆藏地信息 管理书商信息 管理阅览室信息 管理违章类型信息 管理书籍的流通类型 管理读者类型信息 管理借阅规则 DashBoard 仪表盘 提供图书馆关键统计数据 为管理员提供快捷的业务入口 流通管理 管理本图书馆的读者信息、读者证件信息。 对读者在本馆违章类型对应的违章记录进行处理。 对读者违章或者借书超期产生的欠费进行处理。 馆藏信息 馆藏图书及复本信息录入 书目检索 直接编目功能,可以根据ISBN或者书目ID进行查询。 流通借阅 图书馆工作人员可以通过手动输入读者卡号或者读者直接刷卡,来识别读者信息。 图书馆工作人员可以通过手动输入书籍条码号或者用扫码器扫描书籍条码号,来处理书籍的借阅或者归还。 如果读者在还书时有欠费,读者可以选择当场缴费。 在阅览室登到中,图书馆工作人员可以记录当天进入各个阅览室的读者。 统计分析 读者借书数量统计 书籍馆藏数量 书籍流通统计 借阅排行榜 REST API 为移动端提供业务接口 为借还书设备提供业务接口 为第三方提供业务接口 安装 拉取项目代码 git clone https://gitee.com/kzeng/plato.git website_dir composer install 如果composer速度慢,换源: composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ 注意: 代码拉取后,初始化项目 cd website_dir init 数据库迁移命令执行顺序: yii migrate --migrationPath=@mdm/admin/migrations RBAC建表 yii migrate --migrationPath=@yii/rbac/migrations RBAC建表 yii migrate --migrationPath=vendor/pendalf89/yii2-filemanager/migrations Yii2 文件管理器 yii migrate 图书馆系统建表 yii hello/import-books-info 导入图书DEMO信息 集成与配置 图书封面采集 采集命令会按照book中isbn 字段从亚马逊图书库中抓取图书封面地址,并存入book.cover_img字段。 启动ppython 服务 python common\ppython\python\php_python.py 运行采集命令 yii hello/getimgs 注意:采集频度持续过高,会采集失败,待解决。 后台主题 AdminLTE 官方文档 安装配置 权限管理RBAC 安装配置 运行 软件结构 PHP 框架 Yii 2.0.19 代码结构 common config/ contains shared configurations mail/ contains view files for e-mails models/ contains model classes used in both backend and frontend tests/ contains tests for common classes console config/ contains console configurations controllers/ contains console controllers (commands) migrations/ contains database migrations models/

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值