python爬虫–selenium模块

python爬虫–selenium模块

selenium模块

selenium基本概念

selenium优势

  • 便捷的获取网站中动态加载的数据
  • 便捷实现模拟登陆

selenium使用流程:

1.环境安装:pip install selenium

2.下载一个浏览器的驱动程序(谷歌浏览器)

3.实例化一个浏览器对象

基本使用

代码

from selenium import webdriver
from lxml import etree
from time import sleep

if __name__ == '__main__':

    bro = webdriver.Chrome(r"E:\google\Chrome\Application\chromedriver.exe")
    bro.get(url='http://scxk.nmpa.gov.cn:81/xk/')

    page_text = bro.page_source
    tree = etree.HTML(page_text)
    li_list = tree.xpath('//*[@id="gzlist"]/li')
    for li in li_list:
        name = li.xpath('./dl/@title')[0]
        print(name)
    sleep(5)
    bro.quit()

基于浏览器自动化的操作代码

#编写基于浏览器自动化的操作代码

- 发起请求: get(url)

- 标签定位: find系列的方法

- 标签交互: send_ keys( 'xxx' )

- 执行js程序: excute_script('jsCod')

- 前进,后退: back(),forward( )

- 关闭浏览器: quit()

代码

https://www.taobao.com/

from selenium import webdriver
from time import sleep

bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe")

bro.get(url='https://www.taobao.com/')

#标签定位
search_input = bro.find_element_by_id('q')
sleep(2)
#执行一组js代码,使得滚轮向下滑动
bro.execute_script('window.scrollTo(0,document.body.scrollHeight)')
sleep(2)
#标签交互
search_input.send_keys('女装')
button = bro.find_element_by_class_name('btn-search')
button.click()

bro.get('https://www.baidu.com')
sleep(2)
bro.back()
sleep(2)
bro.forward()
sleep(5)
bro.quit()

selenium处理iframe:

- 如果定位的标签存在于iframe标签之中,则必须使用switch_to.frame(id)

- 动作链(拖动) : from selenium. webdriver import ActionChains
	- 实例化一个动作链对象: action = ActionChains (bro)
	- click_and_hold(div) :长按且点击操作
	- move_by_offset(x,y)
	- perform( )让动作链立即执行
	- action.release( )释放动作链对象

代码

https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable

from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains
bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe")

bro.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')

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):
    action.move_by_offset(17,0).perform()
    sleep(0.3)

#释放动作链
action.release()

bro.quit()

selenium模拟登陆QQ空间

代码

https://qzone.qq.com/

from selenium import webdriver
from time import sleep


bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe")
bro.get('https://qzone.qq.com/')
bro.switch_to.frame("login_frame")

switcher = bro.find_element_by_id('switcher_plogin')
switcher.click()

user_tag = bro.find_element_by_id('u')
password_tag = bro.find_element_by_id('p')
user_tag.send_keys('1234455')
password_tag.send_keys('qwer123')
sleep(1)

but = bro.find_element_by_id('login_button')
but.click()

无头浏览器和规避检测

代码

from  selenium import webdriver
from time import sleep
#实现无可视化界面
from selenium.webdriver.chrome.options import Options
#实现规避检测
from selenium.webdriver import ChromeOptions

#实现无可视化界面
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
#实现规避检测
option = ChromeOptions()
option.add_experimental_option('excludeSwitches',['enable-automation'])

bro = webdriver.Chrome(executable_path=r"E:\google\Chrome\Application\chromedriver.exe",chrome_options=chrome_options,options=option)

bro.get('https://www.baidu.com')
print(bro.page_source)
sleep(2)
bro.quit()


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100097.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 联想服务器R630 收集日志

    联想服务器R630 收集日志

    2021年8月30日
    106
  • 交通灯控制逻辑电路设计实验报告_交通灯控制电路的设计报告

    交通灯控制逻辑电路设计实验报告_交通灯控制电路的设计报告交通灯控制逻辑电路设计这是一个数电实验,交通灯,如果使用FPGA或者单片机来完成的话,会简单很多,这里采用的是使用常规的计数器,触发器,门电路等基本器件搭建,扩展部分可以完成总通行时间在100s内任意设置,红、黄、绿灯亮的时间长短之和在100s内任意设置,其实想要超过100s只需要扩展相应的计数器,以及门电路即可,限制功能的往往是资源;一、选题背景1.1、应用背景为了确保十字路口的车辆顺利、畅通地通过,往往都采用自动控制的交通信号灯来进行指挥。其中红灯(R)亮表示该条道路禁止通行;黄灯(Y)亮表示停

    2022年9月15日
    3
  • ubuntu 安装gcc「建议收藏」

    ubuntu 安装gcc「建议收藏」一定要记得先update,不然找不到gccsudoapt-getupdate然后输入下述命令即可sudoapt-getinstallgcc

    2022年5月9日
    41
  • MFC的UDP编程实现[通俗易懂]

    MFC的UDP编程实现[通俗易懂]1、编程原理UDP是面向非连接的通信协议,比TCP协议简单很多。无论是服务器端还是客户端,其通信过程概括为:创建套接字(socket)–>绑定(bind)–>发送send(或接收recv)–>关闭套接字(closesocket) 2、特殊地址:在实际通信网络中,我们几乎不会用到“0.0.0.0″和“127.0.0.1”这样的IP地址。但是在一台计算机上,特别用于某些测试用

    2022年9月7日
    2
  • Solr集成Tomcat

    Solr集成Tomcat

    2021年5月30日
    104
  • pycharm只能安装在c盘吗_pycharm自带python吗

    pycharm只能安装在c盘吗_pycharm自带python吗昨天大家对我(Python)有了一定的了解,那么今天带大家更加系统化的认识一下我,已经了解我的工作方式先说一下如果让我去做一件事情得需要那些“配置”,其实很简单的,不要把我想的太复杂,毕竟还是个单纯的孩子。让我做事当然是有一条一条简短的指令,汇聚在一起然后成为一个模块,之所谓”不积跬步无以至千里,不积小流无以成江海“,正确的指令汇聚在一起我们可以改变世界!咳咳:正经的说一边”1、python是由一…

    2022年8月27日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号