python selenium 的使用——alibaba询盘
1、使用selenium打开浏览器

    # 使用selenium打开浏览器options = webdriver.ChromeOptions()options.add_argument('--disable-extensions')options.add_argument('--no-sandbox')  # run Chrome use rootoptions.add_argument('--disable-setuid-sandbox')options.add_argument('--disable-dev-shm-usage')options.add_argument('--disable-gpu')options.add_experimental_option('excludeSwitches', ['enable-automation'])driver = webdriver.Chrome(options=options)driver.maximize_window()driver.get('https://www.google.com/')time.sleep(5)driver.find_element_by_css_selector("input[class='gLFyf gsfi']").send_keys("alibaba")driver.find_element_by_css_selector("input[class='gLFyf gsfi']").send_keys(Keys.ENTER)press_keys('esc')return driver


搜索结果有几个都是官网,这里取第一个

    ali_name = driver.find_elements_by_tag_name("a")for h in ali_name: if h.get_attribute('href') == "https://www.alibaba.com/":h.click()time.sleep(3)press_keys('esc')break


打开官网后搜索,需要滑到底部这样就可以一次性获取到一整页的48个左右的商品链接,再滑回顶部,比较好看。
滑到底部两次,是因为第一次滑到底部可能还在加载中,所以滑两次就肯定可以到底部。

    search_name = driver.find_element_by_css_selector("input[class='ui-searchbar-keyword']")search_name.send_keys("wigs")driver.find_elements_by_css_selector("input[class='ui-searchbar-submit']")[0].click()#点搜索press_keys('esc')for n in range(20):driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')  # 滑到底部time.sleep(6)driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')  # 滑到底部time.sleep(6)driver.execute_script('window.scrollTo(0,0)') #滑到顶部time.sleep(3)


获取商品链接,如果需要直接打开这个链接就可以用driver.get(‘链接’),这里直接点击

product_link = driver.find_elements_by_css_selector("a[class='elements-title-normal one-line']")  # 搜索结果所有名字
print(len(product_link ))

这里用 if in 来判断我想要打开链接是否在这个页面中 ,在的话就点击它,如果不在就随机点一个,点之前跳到该商品比较好看。

        for index, d in enumerate(result_list):   # 循环整个列表if "https://www.alibaba.com/product-detail/Wig-Hd-Wigs-Wholesale-Hd-Bob_1600214030827.html" in d and d not in click_linklist:#判断链接是否为d,而且为没有点击过的time.sleep(3)driver.execute_script("arguments[0].scrollIntoView();", d)  # 跳到该商品time.sleep(3)d.click()click_linklist.append(d)else:if random.randint(2, 1000) < 3:p = driver.find_elements_by_css_selector("a[class='elements-title-normal one-line']")[index]driver.execute_script("arguments[0].scrollIntoView();", p)  # 跳到该商品p.click()  # 随机点一个driver.switch_to.window(driver.window_handles[-1])else:continue


因为是在主页点开的,所以这里就生成新的窗口页面,需要切换到这里再进行操作,否则下滑等操作就是对原窗口的操作并不是对新窗口的操作了。
进入商品页面之后,下滑浏览商品详情页,然后进行询盘。

driver.switch_to.window(driver.window_handles[-1])#切换到最新的窗口是最后一个
driver.close()#关闭当前窗口
driver.switch_to.window(driver.window_handles[0])  # 切换回主页句柄
            for i in range(20):  # 详情页下滑driver.execute_script("window.scrollBy(0,1000)")time.sleep(2)
            driver.execute_script("arguments[0].scrollIntoView();", driver.find_element_by_css_selector("[class='content-container content-container-snoop']")) # 跳到输入框

这里就有输入框,单选框,发送按钮。这里需要注意的是单选框。

    driver.find_element_by_css_selector("[class='content-container content-container-snoop']").find_element_by_name("content").send_keys("hihihihihihihihihihihihihi")time.sleep(3)s = driver.find_elements_by_css_selector("input[class='ui-checkbox ui-checkbox-system']")[0].is_selected()# 是否选中状态if s == False:driver.find_elements_by_css_selector("input[class='ui-checkbox ui-checkbox-system']")[0].click()#单选框time.sleep(3)driver.find_element_by_css_selector("input[class='ui2-button ui2-button-primary ui2-button-large']").click()#发送time.sleep(3)



    driver.find_element_by_css_selector("li[class='sc-hd-prefix2-tab-trigger']").click()time.sleep(3)driver.find_element_by_css_selector("input[id='xjoinEmail']").send_keys("xxxxxxxxxx@gmail.com")time.sleep(3)driver.find_element_by_css_selector("input[id='xjoinPassword']").send_keys("ASDfgh123")time.sleep(3)driver.find_element_by_css_selector("input[id='xjoinFirstName']").send_keys("felixbo")time.sleep(3)driver.find_element_by_css_selector("input[id='xjoinLastName']").send_keys("man")time.sleep(3)driver.find_element_by_css_selector("span[class='sc-hd-prefix2-checkbox-customize-txt square-checkbox-box']").click()time.sleep(3)

滑块

    draggable = driver.find_element_by_id('nc_1__scale_text')# 滚动指定元素位置driver.execute_script("arguments[0].scrollIntoView();", draggable)time.sleep(2)ActionChains(driver).click_and_hold(draggable).perform()# 拖动ActionChains(driver).move_by_offset(xoffset=247, yoffset=0).perform()ActionChains(driver).release().perform()time.sleep(3)

点击登录sign in,是没有滑块的,当输入账号密码,就会有滑块。
这里需要注意的是要切进ifram,第一次切的是登录窗口的大ifram,第二次切的是滑块单独的ifram,中间是不需要切回去的,有多少个ifram,就直接切几个ifram,当最小的那个切完了,并且在ifram里的操作都完结,才需要切回原始的driver.switch_to_default_content()

    driver.find_element_by_css_selector("li[class='sc-hd-prefix2-tab-trigger']").click()time.sleep(1)driver.switch_to_frame("alibaba-login-box") # 切换大iframedriver.find_element_by_css_selector("input[id='fm-login-id']").send_keys("felixboman455@gmail.com")time.sleep(1)driver.find_element_by_css_selector("input[id='fm-login-password']").send_keys("QAZwsx1987")time.sleep(1)driver.switch_to_frame("baxia-dialog-content")  # 切换小iframetime.sleep(1)# 加上滑块那段代码time.sleep(1)driver.find_element_by_css_selector("input[id='fm-login-submit']").click()#提交time.sleep(3)driver.switch_to_default_content()  # 切回原始iframe


关闭当前窗口,切换回主窗口

            driver.close()driver.switch_to.window(driver.window_handles[0])  # 切换回主页句柄

点击下一页,如果存在下一页的按钮,就点击。
判断是否有提示语,如果有则为最后一页。

        if 'class="seb-pagination__pages-link pages-next"' in driver.page_source:     # 点下一页p = driver.find_element_by_css_selector("a[class='seb-pagination__pages-link pages-next']")driver.execute_script("arguments[0].scrollIntoView();", p)p.click()time.sleep(3)else:breakif " did not match any products. You may consider to:" in driver.page_source:break

python selenium 的使用——alibaba询盘相关推荐

  1. WEB自动化(Python+selenium)的API

    在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                         ...

  2. Python+Selenium+Appium环境搭建

    贫僧第一次写博客,如有不到之处,还望包涵!!! 附Python+Selenium+Appium安装包下载百度盘地址: https://pan.baidu.com/s/1dL5lIe   密码:s9hg ...

  3. Python selenium环境搭建

    Python selenium环境搭建 一.python下载安装 1.       python获取路径:https://www.python.org/downloads/release/python ...

  4. python+selenium实现UI自动化(一)

    一.selenium selenium官方网站 selenium ide 录制工具. 火狐/google/edge插件 selenium webdriver   结合代码来编写自动化用例.提供很多在浏 ...

  5. 外贸行业有哪些渠道获取询盘?

    外贸行业,分为线上.线下. 大多数来说,98%以上的企业,还是在线上进行业务合作.线上渠道多如牛毛.最近几年踊跃出各种平台.工具.已经代运营公司. 但是,效果一般般.总机来说,十家公司,可能只有一家是 ...

  6. python+selenium实现自动化连接校园网

    python+selenium实现自动化连接校园网(资源下载链接在总结) 校园网的自动连接 在学校里面,我经常会用到校园WiFi.我个人使用的是办移动套餐送的wifi套餐,因此,我连接的WiFi是NJ ...

  7. python +selenium+phantomjs 登录爬取新浪微博动态js页面

    登录新浪微博 最近新浪微博好烦,都取消不了验证码这个难搞得东西,而且跳来跳去,一改版以前的代码就都不能用了.目前整理的资料有三种方法: 1. 设Cookie:简单粗暴,免去了模拟登录的好多麻烦,只是要 ...

  8. Python+selenium+firefox模拟登录微博并爬取数据(1

    1:环境python3.5,最新 firefox,selenium-3.14.0. 本来准备用无界面的,但是感觉效果不好看出来所以先用有界面的浏览器来做.分几次来慢慢写.这节先配置好环境. 2:安装: ...

  9. 教你两种python selenium保存图片的方法

    大家好,本篇文章主要讲的是python selenium保存图片最好的两种方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下 selenium爬取页面时经常遇到要保存图片的需求,通常的做法是 ...

  10. mac 搭建python+selenium+chromedriver环境

    mac 搭建python+selenium+chromedriver环境 有关配置默认python3,请查看:https://blog.csdn.net/qq_35098526/article/det ...

最新文章

  1. 微软等数据结构+算法面试100题全部答案集锦
  2. html或者jsp页面刷新问题
  3. boost::push_back相关的测试程序
  4. 推荐9部让你看到酣畅淋漓的复仇电影
  5. jquery的ajax,请求JSON数据。
  6. python random用法_python random 的用法
  7. linux 安装 wkhtmltox
  8. POJ - 1459 Power Network(最大流)(模板)
  9. OpenGL编程指南随书代码在VisualStudio2019的运行方法
  10. linux环境配置以及远程登录linux
  11. 搭建微信公众号后台开发环境
  12. 数据结构——哈希表(散列表)
  13. 人脸识别最全知识图谱,中国学者数量全球第三—清华大学出品
  14. matlab寻找频谱峰值,如何得到明显峰值的频谱图?
  15. 如何用美剧真正提升你的英语水平?
  16. win10改win7 bios设置方法
  17. poj 3399 Product
  18. Win7升为Win10以及win7系统的重装
  19. Apache JMeter压测工具
  20. 菜鸟学JAVA之——static关键字(静态属性和动态属性的区别)

热门文章

  1. 知识点滴- BC和BCE的区别
  2. 菜鸟的mongoDB学习---(二)MongoDB 数据库,对象,集合
  3. Olly Advanced 1.1 by MaRKuS TH-DJM
  4. 黄金分割圆怎么画matlab,黄金分割线的画法和使用方法
  5. 【软件相关】EverythingSumatraPDF的一个小bug
  6. 【转】一起做RGB-D SLAM (1)
  7. 利用Python制作动漫人物
  8. 设计一个重量转换程序 python
  9. Vue3 异步组件 suspense
  10. Attention-Based View Selection Networks for Light-Field Disparity Estimation论文阅读