博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用python selenium webdriver模拟浏览器
阅读量:4668 次
发布时间:2019-06-09

本文共 5617 字,大约阅读时间需要 18 分钟。

 

selenium是进行web自动化测试的一个工具,支持C,C++,Python,Java等语言,他能够实现模拟手工操作浏览器,进行自动化,通过webdriver驱动浏览器操作,我使用的是chrome浏览器,下载chrome  webdriver 放到python的安装目录。

参考连接:

 

 

1 from selenium import webdriver  2 import time  3 import string  4 import datetime  5    6    7 def usage():  8     print("*********************************************************************")  9     print("欢迎使用Amazone差评神器,Enover保留版权,作者:Anker 日期:2016-12-18") 10     print("*********************************************************************") 11   12 def genSearchDate(): 13     now = datetime.datetime.now() 14     print("当前的日期是:%s/%s/%s" % (now.day, now.month, now.year%2000)) 15   16     #计算当前月的的日期范围  17     dayarr = [] 18     if now.day <= 10 : 19         dayarr = [10,1] 20     elif now.day/10 <= 2: 21         dayarr = [now.day,10,1] 22     else: 23         dayarr = [now.day,20,10,1] 24   25     #判断是否闰年 26     day2 = 0 27     if (now.year%4 == 0 and now.year%100 != 0) or now.year%400 == 0: 28         day2 = 29 29     else: 30         day2 = 28 31             32       33     months=[[0,0],[31,20,10,1,],[day2,20,10,1],[31,20,10,1],[30,20,10,1],[31,20,10,1],[30,20,10,1],[31,20,10,1],[31,20,10,1],[30,20,10,1],[31,20,10,1],[30,20,10,1],[31,20,10,1]] 34   35     mon=now.month 36     searchDate=[] 37     while (mon > 0): 38         if (mon == now.month): 39             tmp = dayarr 40         else: 41             tmp = months[mon] 42         for d in range(0,len(tmp)-1): 43             if d==0: 44                 enddate='%s/%s/%s' % (mon, tmp[d], now.year%2000) 45             else: 46                 enddate='%s/%s/%s' % (mon, tmp[d]-1, now.year%2000) 47             begdate='%s/%s/%s' % (mon, tmp[d+1], now.year%2000) 48             val=[begdate,enddate] 49             searchDate.append(val) 50         mon=mon-1 51     #print(searchDate) 52     return searchDate 53   54   55 #登陆亚马逊 56 def loginAmazone(driver): 57     driver.get("https://sellercentral.amazon.com") 58     driver.find_element_by_id('ap_email').send_keys('xxxxx') 59     driver.find_element_by_id('ap_password').send_keys('xxxxx') 60     driver.find_element_by_name('signIn').submit() 61   62   63 #设置查询条件 ASIN 和 时间 64 def searchProcess(driver, asin, begdate,enddate): 65     driver.get("https://sellercentral.amazon.com/gp/orders-v2/search/ref=ag_myosearch_apsearch_myo") 66     driver.find_element_by_id('_myoSO_searchTypeSelect').send_keys('ASIN') 67     driver.find_element_by_id('_myoSO_searchKeyword').send_keys(asin) 68   69     driver.find_element_by_id('_myoSO_SearchOption_exactDates').click() 70     driver.find_element_by_id('exactDateBegin').clear() 71     driver.find_element_by_id('exactDateBegin').send_keys(begdate) 72     driver.find_element_by_id('exactDateEnd').clear() 73     driver.find_element_by_id('exactDateEnd').send_keys(enddate) 74   75     driver.find_element_by_id('_myoSO_SearchButton').click() 76     time.sleep(2) 77   78   79 #设置每页显示50个 80 def setpage50(driver): 81     driver.find_element_by_xpath('//option [@value="50"]').click()  # click 82     driver.find_element_by_xpath('//form [@οnsubmit="return MYO.LO.DoAjaxSearchCall( this );"]').submit() 83     time.sleep(2) 84     driver.find_element_by_id('_myoLO_saveDefaultSearchCheckBox').click() 85   86 #计算记录个数 87 def countPage(source): 88     pattern=' of ' 89     pos1=source.find(pattern) 90     beg=pos1+len(pattern) 91     pos2=source.find('',pos1+len(pattern)) 92     total=int(source[beg:pos2]) 93   94     page=total%50 95     if page==0: 96         page=total/50 97     else: 98         page=int(total/50)+1 99     print("订单总数为:%s,共计%s页" % (total, page))100     return page101  102 #翻页 jump to page103 def jumppage(driver, page, custid):104     rc=False105     for index in range(1,page):106         print("正在查找第%s页" % index)107         elements = driver.find_elements_by_xpath('//input [@maxlength="7"]')108         elements[1].find_element_by_xpath('//input [@name="currentPage"]').send_keys(str(index))109         driver.find_element_by_id('_myoSO_GoToPageForm_1').submit()110         time.sleep(4)111         source=driver.page_source112         pos=source.find(custid)113         if pos != -1:114             print('终于找到了,查找记录如下:')115             print(source[pos-270:pos+24])116             rc=True117             break118     return rc119  120 def searchBadReview(driver, asin, custid, searchDate):121     for i in range(0, len(searchDate)):122         tmpDate=searchDate[i]123         begdate=tmpDate[0]124         enddate=tmpDate[1]125         print('==============================================')126         print("开始找%s到%s的订单" %(begdate, enddate))127         searchProcess(driver, asin, begdate, enddate)128         setpage50(driver)129         source=driver.page_source130         page=countPage(source)131         rc = jumppage(driver, page, custid)132         if  rc == True:133             break134      135  136 #主函数137 def main():138     usage()139  140     #输入参数141     asin = input("请输入ASIN:")142     print("你输入的ASIN是: ", asin)143     custid = input("请输入Customer profile id:")144     print("你输入的内容是: ", custid)145     searchDate=genSearchDate()146     #print("查找时间范围如下:")147     #print(searchDate)148  149     #默认浏览器行为150     print('==============================================')151     print("开始打开浏览器,并登陆Amazone seller center")152     driver = webdriver.Chrome()153     loginAmazone(driver)154     time.sleep(1)155     searchBadReview(driver, asin, custid, searchDate)156     driver.quit()157     time.sleep(60)158  159 if __name__ == "__main__":160     main()

 

引自:https://www.cnblogs.com/Anker/p/6195172.html

转载于:https://www.cnblogs.com/root-wang/p/9184004.html

你可能感兴趣的文章
MyBatis(3):SQL映射
查看>>
PostQuitMessage, PostThreadMessage( WM_QUIT )
查看>>
升压转换器 (Boost)
查看>>
构建执法阅读笔记六
查看>>
2019年度苏州之春摄影作品展
查看>>
Css Hack
查看>>
高强度的加密软件怎么制作
查看>>
出现java.lang.IllegalArgumentException异常
查看>>
js获取select标签选中的值
查看>>
完成课件中的动手动脑的或需要验证的相关内容。
查看>>
UISearchBar控件
查看>>
xUtils
查看>>
转, C# 如何在MVC3中取消备用控制器的选择
查看>>
ASP基础教程:ASP脚本变量、函数、过程和条件语句
查看>>
ASP基础教程:数据库查询语言(2)
查看>>
自学Python八 爬虫大坑之网页乱码
查看>>
Core Animation 文档翻译 (第二篇)—核心动画基础要素
查看>>
适配器模式(Adapter)
查看>>
C# 扩展方法
查看>>
node.js学习-整理
查看>>