python selenium 的使用——alibaba询盘
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询盘相关推荐
- WEB自动化(Python+selenium)的API
在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家 ...
- Python+Selenium+Appium环境搭建
贫僧第一次写博客,如有不到之处,还望包涵!!! 附Python+Selenium+Appium安装包下载百度盘地址: https://pan.baidu.com/s/1dL5lIe 密码:s9hg ...
- Python selenium环境搭建
Python selenium环境搭建 一.python下载安装 1. python获取路径:https://www.python.org/downloads/release/python ...
- python+selenium实现UI自动化(一)
一.selenium selenium官方网站 selenium ide 录制工具. 火狐/google/edge插件 selenium webdriver 结合代码来编写自动化用例.提供很多在浏 ...
- 外贸行业有哪些渠道获取询盘?
外贸行业,分为线上.线下. 大多数来说,98%以上的企业,还是在线上进行业务合作.线上渠道多如牛毛.最近几年踊跃出各种平台.工具.已经代运营公司. 但是,效果一般般.总机来说,十家公司,可能只有一家是 ...
- python+selenium实现自动化连接校园网
python+selenium实现自动化连接校园网(资源下载链接在总结) 校园网的自动连接 在学校里面,我经常会用到校园WiFi.我个人使用的是办移动套餐送的wifi套餐,因此,我连接的WiFi是NJ ...
- python +selenium+phantomjs 登录爬取新浪微博动态js页面
登录新浪微博 最近新浪微博好烦,都取消不了验证码这个难搞得东西,而且跳来跳去,一改版以前的代码就都不能用了.目前整理的资料有三种方法: 1. 设Cookie:简单粗暴,免去了模拟登录的好多麻烦,只是要 ...
- Python+selenium+firefox模拟登录微博并爬取数据(1
1:环境python3.5,最新 firefox,selenium-3.14.0. 本来准备用无界面的,但是感觉效果不好看出来所以先用有界面的浏览器来做.分几次来慢慢写.这节先配置好环境. 2:安装: ...
- 教你两种python selenium保存图片的方法
大家好,本篇文章主要讲的是python selenium保存图片最好的两种方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下 selenium爬取页面时经常遇到要保存图片的需求,通常的做法是 ...
- mac 搭建python+selenium+chromedriver环境
mac 搭建python+selenium+chromedriver环境 有关配置默认python3,请查看:https://blog.csdn.net/qq_35098526/article/det ...
最新文章
- 微软等数据结构+算法面试100题全部答案集锦
- html或者jsp页面刷新问题
- boost::push_back相关的测试程序
- 推荐9部让你看到酣畅淋漓的复仇电影
- jquery的ajax,请求JSON数据。
- python random用法_python random 的用法
- linux 安装 wkhtmltox
- POJ - 1459 Power Network(最大流)(模板)
- OpenGL编程指南随书代码在VisualStudio2019的运行方法
- linux环境配置以及远程登录linux
- 搭建微信公众号后台开发环境
- 数据结构——哈希表(散列表)
- 人脸识别最全知识图谱,中国学者数量全球第三—清华大学出品
- matlab寻找频谱峰值,如何得到明显峰值的频谱图?
- 如何用美剧真正提升你的英语水平?
- win10改win7 bios设置方法
- poj 3399 Product
- Win7升为Win10以及win7系统的重装
- Apache JMeter压测工具
- 菜鸟学JAVA之——static关键字(静态属性和动态属性的区别)
热门文章
- 知识点滴- BC和BCE的区别
- 菜鸟的mongoDB学习---(二)MongoDB 数据库,对象,集合
- Olly Advanced 1.1 by MaRKuS TH-DJM
- 黄金分割圆怎么画matlab,黄金分割线的画法和使用方法
- 【软件相关】EverythingSumatraPDF的一个小bug
- 【转】一起做RGB-D SLAM (1)
- 利用Python制作动漫人物
- 设计一个重量转换程序 python
- Vue3 异步组件 suspense
- Attention-Based View Selection Networks for Light-Field Disparity Estimation论文阅读