博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python实训第六天
阅读量:7284 次
发布时间:2019-06-30

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

1.selenium剩余用法 2.selenium万能登陆破解 3.破解极限滑动验证码 注:selenium驱动的浏览器是干净无缓存的
from selenium import webdriver driver=webdriver.Chrome() try:     driver.implicitly_wait(5)     driver.get('https://doc.scrapy.org/en/latest/_static/selectors-sample1.html')     html=driver.find_element_by_xpath('/html')     print(html.tag_name)     div=driver.find_element_by_xpath('//div')     print(div.tag_name)     div=driver.find_element_by_xpath('//div[@id="images"]')     print(div.tag_name)     print(div.text)     a=driver.find_element_by_xpath('//a')     print(a.tag_name)     a_s=driver.find_element_by_xpath('//a')     print(a_s)     a=driver.find_element_by_xpath('//a').get_attribute('href')     print(a) finally:     driver.close() 元素交互:
# 获取cookies # from selenium import webdriver # import  time # driver=webdriver.Chrome() # try: #     driver.implicitly_wait(10) #     driver.get('http://www.zhihu.com/explore') #     print(driver.get_cookies()) # #     time.sleep(10) # finally: #     driver.close() # # #选项卡管理:切换选项卡,有js的方式windows.open,有windows快捷键:ctrl+t等,最通用的就是js的方式 # import time # from selenium import webdriver # # browser=webdriver.Chrome() # try: #     browser.get('https://www.baidu.com') #     browser.execute_script('window.open()')#执行js代码,弹窗操作,新建浏览器窗口 # #     print(browser.window_handles) #获取所有的选项卡 # # 切换到第二个窗口 #     browser.switch_to_window(browser.window_handles[1]) # # 第二个窗口王淘宝发送请求 #     browser.get('https://www.taobao.com') #     time.sleep(10) # # 切换到第一个窗口 #     browser.switch_to_window(browser.window_handles[0]) #     browser.get('https://www.sina.com.cn') #     time.sleep(10) # finally: #     browser.close() 爬取京东部分信息:
from  selenium import  webdriver from  selenium.webdriver.common.keys import Keys import time driver =webdriver.Chrome() try:     driver.implicitly_wait(10)     driver.get('http://www.jd.com/')     input_tag=driver.find_element_by_id('key')     input_tag.send_keys('macbook')     input_tag.send_keys(Keys.ENTER)     good_list=driver.find_elements_by_class_name('gl-item')     for good in good_list:       good_url=good.find_element_by_css_selector(           '.p-img a').get_attribute('href')       good_name=good.find_element_by_css_selector(           '.p-name em').text.replace("\n","--")       good_price=good.find_element_by_class_name(           'p-price').text.replace("\n",":")       good_commit=good.find_element_by_class_name(           'p-commit').text.replace("\n"," ")       good_from=good.find_element_by_class_name(           'J_im_icon').text.replace("\n"," ")       good_content=f'''                     商品链接:{good_url}                     商品名称:{good_name}                     商品价格:{good_price}                     评价人数:{good_commit}                     商品商家:{good_from}                     \n                     '''       print(good_content)       with open('jd.text','a',encoding='utf-8')as f:           f.write(good_content)     time.sleep(10) finally:     driver.close() 爬取京东信息:
''' 爬取京东商品信息:     请求url:         https://www.jd.com/     提取商品信息:         1.商品详情页         2.商品名称         3.商品价格         4.评价人数         5.商品商家 ''' from selenium import webdriver from selenium.webdriver.common.keys import Keys import time def get_good(driver):     try:         # 通过JS控制滚轮滑动获取所有商品信息         js_code = '''             window.scrollTo(0,5000);         '''         driver.execute_script(js_code)  # 执行js代码         # 等待数据加载         time.sleep(2)         # 3、查找所有商品div         # good_div = driver.find_element_by_id('J_goodsList')         good_list = driver.find_elements_by_class_name('gl-item')         n = 1         for good in good_list:             # 根据属性选择器查找             # 商品链接             good_url = good.find_element_by_css_selector(                 '.p-img a').get_attribute('href')             # 商品名称             good_name = good.find_element_by_css_selector(                 '.p-name em').text.replace("\n", "--")             # 商品价格             good_price = good.find_element_by_class_name(                 'p-price').text.replace("\n", ":")             # 评价人数             good_commit = good.find_element_by_class_name('p-commit').text             good_content = f'''                         商品链接: {good_url}                         商品名称: {good_name}                         商品价格: {good_price}                         评价人数: {good_commit}                         \n                         '''             print(good_content)             with open('jd.txt', 'a', encoding='utf-8') as f:                 f.write(good_content)         next_tag = driver.find_element_by_class_name('pn-next')         next_tag.click()         time.sleep(2)         # 递归调用函数         get_good(driver)         time.sleep(10)     finally:         driver.close() if __name__ == '__main__':     good_name = input('请输入爬取商品信息:').strip()     driver = webdriver.Chrome()     driver.implicitly_wait(10)     # 1、往京东主页发送请求     driver.get('https://www.jd.com/')     # 2、输入商品名称,并回车搜索     input_tag = driver.find_element_by_id('key')     input_tag.send_keys(good_name)     input_tag.send_keys(Keys.ENTER)     time.sleep(2)     get_good(driver) 破解百度验证登录:
from selenium import webdriver from selenium.webdriver import ChromeOptions import time r''' 步骤:     1、打开文件的查看,显示隐藏文件     2、找到C:\Users\administortra\AppData\Local\Google\Chrome\User Data         删除Default文件     3、重新打开浏览器,并登陆百度账号         - 此时会创建一个新的Default缓存文件 ''' # 获取options对象,参数对象 options = ChromeOptions() # 获取cookies保存路径 # 'C:\Users\administortra\AppData\Local\Google\Chrome\User Data' profile_directory = r'--user-data-dir=C:\Users\user\AppData\Local\Google\Chrome\User Data' # 添加用户信息目录 options.add_argument(profile_directory) # 把参数加载到当前驱动中  chrome_options默认参数,用来接收options对象 driver = webdriver.Chrome(chrome_options=options) try:     driver.implicitly_wait(10)     driver.get('https://www.baidu.com/')     '''     BDUSS:***** BDUSS=13VUxHMmRlRTNia1dyLTg3YWRtTEhmaDRIYkQ2M1Q1OTlRWnlNZDhZLWE0eTlkSUFBQUFBJCQAAAAAAAAAAAEAAAB9QTWg0v7S~tS81LzT0NLi0rIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJpWCF2aVghdYS; Host: www.baidu.com     '''     # 添加用户cookies信息     # name、value必须小写     driver.add_cookie({"name": "BDUSS", "value": "13VUxHMmRlRTNia1dyLTg3YWRtTEhmaDRIYkQ2M1Q1OTlRWnlNZDhZLWE0eTlkSUFBQUFBJCQAAAAAAAAAAAEAAAB9QTWg0v7S~tS81LzT0NLi0rIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJpWCF2aVghdYS"})     # 刷新操作     driver.refresh()     time.sleep(10) finally:     driver.close() 破解滑动验证:
# ActionChanges动作链 from selenium import webdriver from selenium.webdriver import ActionChains import time driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') try:     # driver.switch_to_frame('iframeResult')     # 切换到id为iframeResult的窗口内     driver.switch_to.frame('iframeResult')     # 源位置     draggable = driver.find_element_by_id('draggable')     # 目标位置     droppable = driver.find_element_by_id('droppable')     # 调用ActionChains,必须把驱动对象传进去     # 得到一个动作链对象,复制给一个变量     actions = ActionChains(driver)     # 方式一: 机器人     # 瞬间把源图片位置秒移到目标图片位置     # actions.drag_and_drop(draggable, droppable)  # 编写一个行为     # actions.perform()  # 执行编写好的行为     # 方式二: 模拟人的行为     source = draggable.location['x']     target = droppable.location['x']     print(source, target)     distance = target - source     print(distance)     # perform:每个动作都要调用perform执行     # 点击并摁住源图片     ActionChains(driver).click_and_hold(draggable).perform()     s = 0     while s < distance:         # 执行位移操作         ActionChains(driver).move_by_offset(xoffset=2, yoffset=0).perform()         s += 2     # 释放动作链     ActionChains(driver).release().perform()     time.sleep(10) finally:     driver.close() ''' 控制浏览器前进、后退 ''' from selenium import webdriver import time driver = webdriver.Chrome() try:     driver.implicitly_wait(10)     driver.get('https://www.jd.com/')     driver.get('https://www.baidu.com/')     driver.get('https://www.cnblogs.com/')     time.sleep(2)     # 回退操作     driver.back()     time.sleep(1)     # 前进操作     driver.forward()     time.sleep(1)     driver.back()     time.sleep(10) finally:     driver.close()

转载于:https://www.cnblogs.com/7777qqq/p/11047145.html

你可能感兴趣的文章
Home键和back键下 Activity的生命周期变化
查看>>
用MotoMidMan给L7批量安装java程序
查看>>
C语言中main函数之前可以进行赋值作吗?
查看>>
WKWebView Cookie注入
查看>>
组合数据类型,英文词频统计
查看>>
【3】火狐中: radio被点击以后,重刷页面,不会选择默认的radio
查看>>
读书笔记:《HTML5开发手册》-- 现存元素的变化
查看>>
mongodb php
查看>>
C#限速下载网络文件
查看>>
在operator=中处理”自我赋值“
查看>>
纯CSS实现三列DIV等高布局
查看>>
Web应用架构-DNS
查看>>
OperateXMLDateSet
查看>>
【转】Objective-C类初始化:load与initialize
查看>>
Aria2 Axel wget curl 四个下载命令
查看>>
kylin-cube存储结构
查看>>
PHP基础知识学习总结
查看>>
【SSH网上商城项目实战30】项目总结(附源码下载地址)
查看>>
2015最流行的Android组件、工具、框架大全
查看>>
如何定义领域模型(概念模型)
查看>>