我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python Selenium自动化爬虫的方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python Selenium自动化爬虫的方法是什么

本篇内容主要讲解“Python Selenium自动化爬虫的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python Selenium自动化爬虫的方法是什么”吧!

    简单介绍:

    Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器(2018年开发者说暂停开发,chromedriver也可以实现同样的功能)),可以接收指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏。

    1.安装

    pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

    2.下载浏览器驱动

    这里用的谷歌浏览器

    http://npm.taobao.org/mirrors/chromedriver/

    查看自己的浏览器版本下载对应的驱动。

    Python Selenium自动化爬虫的方法是什么

    把解压后的驱动放在自己的python.exe 目录下。

    3.实例

    3.1下载对应版本的浏览器驱动

    http://npm.taobao.org/mirrors/chromedriver/

    Python Selenium自动化爬虫的方法是什么

    Python Selenium自动化爬虫的方法是什么

    把解压后的驱动放在自己的python.exe 目录下

    Python Selenium自动化爬虫的方法是什么

    3.2测试code,打开一个网页,并获取网页的标题

    from selenium.webdriver import Chromeif __name__ == '__main__':    web = Chrome()    web.get("https://baidu.com")    print(web.title)

    Python Selenium自动化爬虫的方法是什么

    Python Selenium自动化爬虫的方法是什么

    3.3一个小样例

    from selenium.webdriver import Chromeif __name__ == '__main__':    web = Chrome()    url = 'https://ac.nowcoder.com/acm/home'    web.get(url)    # 获取要点击的a标签    el = web.find_element_by_xpath('/html/body/div/div[3]/div[1]/div[1]/div[1]/div/a')    # 点击    el.click()                          # "/html/body/div/div[3]/div[1]/div[2]/div[2]/div[2]/div[1]/h5/a"    # 爬取想要的内容    lists = web.find_elements_by_xpath("/html/body/div/div[3]/div[1]/div[2]/div[@class='platform-item js-item ']/div["                                       "2]/div[1]/h5/a")    print(len(lists))    for i in lists:        print(i.text)

    3.4自动输入并跳转

    from selenium.webdriver import Chromefrom selenium.webdriver.common.keys import Keysimport timeif __name__ == '__main__':    web = Chrome()    url = 'https://ac.nowcoder.com/acm/home'    web.get(url)    el = web.find_element_by_xpath('/html/body/div/div[3]/div[1]/div[1]/div[1]/div/a')    el.click()    time.sleep(1)    input_el = web.find_element_by_xpath('/html/body/div/div[3]/div[1]/div[1]/div[1]/form/input[1]')    input_el.send_keys('牛客', Keys.ENTER)    #  do something

    4.开启无头模式

    是否开启无头模式(即是否需要界面)

    from selenium.webdriver import Chromefrom selenium.webdriver.chrome.options import Optionsoption = Options()  # 实例化option对象option.add_argument("--headless")  # 给option对象添加无头参数if __name__ == '__main__':    web = Chrome(executable_path='D:\PyProject\spider\venv\Scripts\chromedriver.exe',options=option) # 指定驱动位置,否则从python解释器目录下查找.    web.get("https://baidu.com")    print(web.title)

    5.保存页面截图

    from selenium.webdriver import Chromefrom selenium.webdriver.chrome.options import Optionsoption = Options()  # 实例化option对象option.add_argument("--headless")  # 给option对象添加无头参数if __name__ == '__main__':    web = Chrome()    web.maximize_window()  # 浏览器窗口最大化    web.get("https://baidu.com")    print(web.title)    web.save_screenshot('baidu.png')  # 保存当前网页的截图  保存到当前文件夹下    web.close()  # 关闭当前网页

    6.模拟输入和点击

    from selenium.webdriver import Chromefrom selenium.webdriver.chrome.options import Optionsoption = Options()  # 实例化option对象option.add_argument("--headless")  # 给option对象添加无头参数if __name__ == '__main__':    web = Chrome()    web.maximize_window()  # 浏览器窗口最大化    web.get("https://baidu.com")    el = web.find_element_by_id('kw')    el.send_keys('Harris-H')    btn = web.find_element_by_id('su')    btn.click()    # web.close()  # 关闭当前网页

    貌似现在百度可以识别出selenium,还需要图片验证。

    6.1根据文本值查找节点

    # 找到文本值为百度一下的节点driver.find_element_by_link_text("百度一下") # 根据链接包含的文本获取元素列表,模糊匹配driver.find_elements_by_partial_link_text("度一下")

    6.2获取当前节点的文本

    ele.text # 获取当前节点的文本ele.get_attribute("data-click")  # 获取到属性对应的value

    6.3打印当前网页的一些信息

    print(driver.page_source)  # 打印网页的源码print(driver.get_cookies())  # 打印出网页的cookieprint(driver.current_url)  # 打印出当前网页的url

    6.4关闭浏览器driver.close()  # 关闭当前网页

    driver.close()  # 关闭当前网页driver.quit()  # 直接关闭浏览器

    6.5模拟鼠标滚动

    from selenium.webdriver import Chromeimport timeif __name__ == '__main__':    driver = Chrome()    driver.get(        "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=78000241_12_hao_pg&wd=selenium%20js%E6%BB%91%E5%8A%A8&fenlei=256&rsv_pq=8215ec3a00127601&rsv_t=a763fm%2F7SHtPeSVYKeWnxKwKBisdp%2FBe8pVsIapxTsrlUnas7%2F7Hoo6FnDp6WsslfyiRc3iKxP2s&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=31&rsv_sug1=17&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=9266&rsv_sug4=9770")    #  1.滚动到网页底部    js = "document.documentElement.scrollTop=1000"    # 执行js    driver.execute_script(js)    time.sleep(2)    # 滚动到顶部    js = "document.documentElement.scrollTop=0"    driver.execute_script(js)  # 执行js    time.sleep(2)    driver.close()

    7.ChromeOptions

    options = webdriver.ChromeOptions()options.add_argument("--proxy-server=http://110.52.235.176:9999") # 添加代理options.add_argument("--headless") # 无头模式options.add_argument("--lang=en-US") # 网页显示英语prefs = {"profile.managed_default_content_settings.images": 2, 'permissions.default.stylesheet': 2} # 禁止渲染options.add_experimental_option("prefs", prefs)driver = webdriver.Chrome(executable_path="D:\ProgramApp\chromedriver\chromedriver73.exe",chrome_options=options) driver.get("http://httpbin.org/ip")

    8.验证滑块移动

    目标:滑动验证码

    • 定位按钮

    • 按住滑块

    • 滑动按钮

    import timefrom selenium import webdriverif __name__ == '__main__':    chrome_obj = webdriver.Chrome()    chrome_obj.get('https://www.helloweba.net/demo/2017/unlock/')    # 1.定位滑动按钮    click_obj = chrome_obj.find_element_by_xpath('//div[@class="bar1 bar"]/div[@class="slide-to-unlock-handle"]')    # 2.按住    # 创建一个动作链对象,参数就是浏览器对象    action_obj = webdriver.ActionChains(chrome_obj)    # 点击并且按住,参数就是定位的按钮    action_obj.click_and_hold(click_obj)    # 得到它的宽高    size_ = click_obj.size    width_ = 298 - size_['width']  # 滑框的宽度 减去 滑块的 宽度 就是 向x轴移动的距离(向右)    print(width_)    # 3.定位滑动坐标    action_obj.move_by_offset(298-width_, 0).perform()    # 4.松开滑动    action_obj.release()    time.sleep(6)    chrome_obj.quit()

    9.打开多窗口和页面切换

    有时候窗口中有很多子tab页面。这时候肯定是需要进行切换的。selenium提供了一个叫做switch_to_window来进行切换,具体切换到哪个页面,可以从driver.window_handles中找到

    from selenium import webdriverif __name__ == '__main__':    driver = webdriver.Chrome()    driver.get("https://www.baidu.com/")    driver.implicitly_wait(2)    driver.execute_script("window.open('https://www.douban.com/')")    driver.switch_to.window(driver.window_handles[1])    print(driver.page_source)

    10.Cookie操作

    # 1.获取所有的cookie:for cookie in driver.get_cookies():    print(cookie)# 2.根据cookie的key获取value:value = driver.get_cookie(key)# 3.删除所有的cookie:driver.delete_all_cookies()# 4.删除某个cookie:driver.delete_cookie(key)# 添加cookie:driver.add_cookie({"name":"password","value":"111111"})

    11.模拟登录

    这里模拟登录我们学校教务处:

    from selenium.webdriver import Chromeif __name__ == '__main__':    web = Chrome()    web.get('http://bkjx.wust.edu.cn/')    username = web.find_element_by_id('userAccount')    username.send_keys('xxxxxxx') # 这里填自己的学号    password = web.find_element_by_id('userPassword')    password.send_keys('xxxxxxx') # 这里填自己的密码    btn = web.find_element_by_xpath('//*[@id="ul1"]/li[4]/button')    btn.click()    # do something

    因为没有滑块啥的验证,所以就很简单qwq。然后后面进行自己的操作即可。

    12.优缺点

    selenium能够执行页面上的js,对于js渲染的数据和模拟登陆处理起来非常容易。
    selenium由于在获取页面的过程中会发送很多请求,所以效率非常低,所以在很多时候需要酌情使用。

    到此,相信大家对“Python Selenium自动化爬虫的方法是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Python Selenium自动化爬虫的方法是什么

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Python Selenium自动化爬虫的方法是什么

    本篇内容主要讲解“Python Selenium自动化爬虫的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python Selenium自动化爬虫的方法是什么”吧!简单介绍:Selen
    2023-06-28

    Python爬虫实现自动化爬取b站实时弹幕的方法

    这篇文章主要介绍了Python爬虫实现自动化爬取b站实时弹幕的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Python主要用来做什么Python主要应用于:1、Web开
    2023-06-14

    python爬虫获取数据的方法是什么

    Python爬虫获取数据的方法有以下几种:1. 使用第三方库:Python有很多强大的第三方库,如Requests、BeautifulSoup、Scrapy等,可以用来实现爬虫功能。使用这些库可以发送HTTP请求、解析HTML页面、抓取数据
    2023-10-19

    什么是Python爬虫及用法

    什么是Python爬虫及用法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在学习爬虫之前我们需要明白的一个问题:爬虫能做什么?爬虫除了能够获取互联网的数据以外还能够帮我们完成很
    2023-06-02

    python自动化断言的方法是什么

    Python中有几种方法可以实现自动化断言:使用assert语句:assert语句用于检查某个条件是否为真,如果条件为假,则会抛出AssertionError异常。可以在代码中插入多个assert语句来检查多个条件。使用断言库:Python
    2023-10-23

    golang爬虫和Python爬虫的区别是什么

    golang爬虫和Python爬虫的区别是:1、Golang具有较高的性能,而Python通常比较慢;2、Golang的语法设计简洁、清晰,而Python的语法简洁、易读易写;3、Golang天生支持并发,而Python的并发性能相对较差;
    golang爬虫和Python爬虫的区别是什么
    2023-12-12

    python学习-Selenium爬虫之使用代理ip的方法

    今天给大家分享的是如何在爬取数据的时候防止IP被封,今天给大家分享两种方法,希望大家可以认真学习,再也不用担心被封IP啦。第一种:降低访问速度,我们可以使用time模块中的sleep,使程序每运行一次后就睡眠1s,这样的话就可以大大的减少
    2023-06-02

    node.js简单爬虫的方法是什么

    这篇文章主要介绍“node.js简单爬虫的方法是什么”,在日常操作中,相信很多人在node.js简单爬虫的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”node.js简单爬虫的方法是什么”的疑惑有所
    2023-07-04

    Python自动化操作Excel的方法是什么

    今天小编给大家分享一下Python自动化操作Excel的方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、Pyth
    2023-07-06

    Python爬虫所需要的爬虫代理ip是什么

    本篇内容主要讲解“Python爬虫所需要的爬虫代理ip是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬虫所需要的爬虫代理ip是什么”吧!1 代理类型代理IP一共可以分成4种类型
    2023-06-02

    python爬虫中分布式爬虫的作用是什么

    这篇文章给大家分享的是有关python爬虫中分布式爬虫的作用是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。随着大数据时代的来临,大数据也吸引了越来越多的关注。网络爬虫是一种高效的信息抓取工具,它集成了搜索引
    2023-06-15

    JS参数反爬虫的方法是什么

    这篇文章主要介绍“JS参数反爬虫的方法是什么”,在日常操作中,相信很多人在JS参数反爬虫的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JS参数反爬虫的方法是什么”的疑惑有所帮助!接下来,请跟着小编
    2023-06-02

    mysql自动优化的方法是什么

    MySQL自动优化的方法主要包括使用MySQL的自动优化器和执行自动优化工具。MySQL的自动优化器:MySQL自带了一个优化器,它可以根据表的统计信息和查询的情况自动选择最优的执行计划。执行自动优化工具:有一些第三方工具可以帮助MySQL
    mysql自动优化的方法是什么
    2024-04-22

    Python + selenium 自动化测试框架是怎样的

    今天就跟大家聊聊有关Python + selenium 自动化测试框架是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。自动化测试框架项目自动化测试框架设计为4层1.基础层(通用
    2023-06-22

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录