2021-4-6 python爬虫自学-——selenium动态/iframe

selenium模块的基本使用:

问题:selenium模块与爬虫之间具有怎样的关联?
    - 便捷的获取网站中动态加载的数据
    - 便捷的实现模拟登陆
什么是selenium模块
    - 基于浏览器自动化的一个模块。
selenium使用流程:
    - pip install selenium
    - 下载一个浏览器的驱动程序 
    -实例化一个浏览器对象
    -编写基于浏览器自动化的操作代码
        -发起请求:get(url)
        -标签定位:find系列的方法
        -标签交互:send_keys('xxx')
        -执行js程序:excute_script('jsCode')
        -前进,后退:forword(),back()
        -关闭:quit()
    -selenium处理iframe
        -如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)
        -动作链(拖动):from selecnium.webdriver import ActionChains
            -实例化一个动作链对象:action=ActionChains(bro)
            - click_and-hold(div):长按且点击操作
            - move_by_offset(x,y)
            - perform()让动作链立刻执行
            - action.release()释放动作链对象

from selenium import webdriver
from lxml import etree
from time import sleep
#实例化一个浏览器对象,传入驱动
bro=webdriver.Chrome(executable_path='./chromedriver.exe')
#让浏览器发起一个直到url对应请求
bro.get('http://scxk.nmpa.gov.cn:81/xk/')
#page_source获取浏览器当前页面的页面源码数据
page_text=bro.page_source
#解析企业实际class[dzpzmain]/div/ul[2]/li/dl
tree=etree.HTML(page_text)
li_list=tree.xpath('//ul[@id="gzlist"]/li')
for li in li_list:
    name=li.xpath('./dl/@title')[0]
    print(name)
sleep(5)
bro.quit()
from selenium import webdriver
from lxml import etree
from time import sleep
bro=webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get('https://www.taobao.com/')
#标签定位:
search_input=bro.find_element_by_id('q')
#标签交互:
search_input.send_keys('许佳琪同款')
#执行一组js程序
#bro.execute('window.scrollTo(0,document.body.scrollHeight)')
#sleep(2)
#点击搜索按钮
btn=bro.find_element_by_css_selector('.btn-search')
btn.click()
bro.get('https://baidu.com')
sleep(2)
#回退
bro.back()
#前进
bro.forward()
sleep(5)

控制css的加载:for.set_preference(“premissions.default.stylesheet”,2)
控制图片文件的显示:for.set_preference(“premissions.default.image”,2)
控制Javascript的运行:for.set_preference(“Javascript.enabled”,False)

from selenium import  webdriver
from time import  sleep
#导入动作链
from selenium.webdriver import  ActionChains
bro=webdriver.Chrome(executable_path='./chromedriver.exe')
bro.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')
#如果定位的标签是存在于iframe标签之中的则必须通过如下操作在标签进行标签定位
bro.switch_to_frame('iframeResult')#切换浏览器标签定位的作用域
div=bro.find_element_by_id('draggable')
#动作链
action=ActionChains(bro)
#点击长按指定的标签
action.click_and_hold(div)
for i in range(5):
    #perform()立即执行动作链操作
    #x表示水平方向,y表示垂直方向
    action.move_by_offset(17,0).perform()
    sleep(0.3)
#释放动作链
action.release()
print(div)
bro.quit()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值