『python爬虫』24. selenium之无头浏览器-后台静默运行(保姆级图文)

这篇具有很好参考价值的文章主要介绍了『python爬虫』24. selenium之无头浏览器-后台静默运行(保姆级图文)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中

1. 无头浏览器

  • 一般性的selenium会打开浏览器页面,展示图形化页面给我们看,我们都应该知道命令行式的程序肯定比这种渲染图形化界面的程序快速高效。为了一定程度上缓解selenium慢的问题,我们可以采用无头浏览器。

  • 无头浏览器值。“无头浏览器”的“无头”元素与它们确实缺少一个关键元素(即图形用户界面(GUI))有关。这使得我们可以做到后台的静默运行中完成爬虫。

  • 优点:快捷高效

  • 缺点:编写代码和调试更加困难(没有图形化界面的痛苦)

  • 适用场景:已经确保能够成功爬取数据,为了提高效率,可以使用无头浏览器。


2. 分析被爬取数据的网页结构

艺恩数据
https://www.endata.com.cn/BoxOffice/BO/Year/index.html
  • 年份下拉框select元素的xpath //*[@id="OptionDate"]定位
    『python爬虫』24. selenium之无头浏览器-后台静默运行(保姆级图文)
  • 借助 select支持库将select元素转为select对象
sel = Select(sel_el)# 对元素进行包装, 包装成下拉菜单对象
  • 抓取每个年份的数据table xpath定位 //*[@id="TableList"]/table

『python爬虫』24. selenium之无头浏览器-后台静默运行(保姆级图文)
i就是每一个下拉框选项的索引位置 把5换成len(sel.options)表示遍历所有年份 这里是5表示最近4年【0,5)

# for i in range(len(sel.options)):#所有年份的数据
for i in range(5):#最近【0,5)年的数据 也就是 [2023-2019]
    sel.select_by_index(i)  # 遍历每一年,按照索引进行切换
    time.sleep(2)
    table = web.find_element_by_xpath('//*[@id="TableList"]/table')
    print(table.text)  # 打印所有文本信息
    print("===================================")


3. 完整代码

from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
import time


# 创建一个参数对象,用来控制chrome以无界面模式打开(可以视为固定写法)
opt = Options()#新建参数对象
opt.add_argument("--headless")#无头
opt.add_argument("--disbale-gpu")#无gpu图形化界面

web = Chrome(options=opt)  # 把参数配置设置到浏览器中

web.get("https://www.endata.com.cn/BoxOffice/BO/Year/index.html")

time.sleep(2)

sel_el = web.find_element_by_xpath('//*[@id="OptionDate"]')# 定位到下拉列表

sel = Select(sel_el)# 对元素进行包装, 包装成下拉菜单对象
# print(sel.options) #打印所有的下拉选项
# 让浏览器进行调整选项
for i in range(5):  # i就是每一个下拉框选项的索引位置  把5换成len(sel.options)表示遍历所有年份 这里是5表示最近4年【0,5)
    sel.select_by_index(i)  # 遍历每一年,按照索引进行切换
    time.sleep(2)
    table = web.find_element_by_xpath('//*[@id="TableList"]/table')
    print(table.text)  # 打印所有文本信息
    print("===================================")

print("运行完毕.  ")


# 拿到页面代码Elements(经过数据加载以及js执行之后的结果的html内容)
print(web.page_source)

web.close()#注意关闭连接,如果不关闭可能会导致有多个连接,进而容易封禁
print("关闭连接")

『python爬虫』24. selenium之无头浏览器-后台静默运行(保姆级图文)

『python爬虫』24. selenium之无头浏览器-后台静默运行(保姆级图文)


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『python爬虫』 专栏,持续更新中
欢迎关注 『python爬虫』 专栏,持续更新中
『未完待续』文章来源地址https://www.toymoban.com/news/detail-466715.html


到了这里,关于『python爬虫』24. selenium之无头浏览器-后台静默运行(保姆级图文)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium Edge的无头浏览器模式以及反WebDriver检测

            由于本人只使用Edge浏览器,所以在得知Selenium对PantomJS的支持取消后,在网上找了各种关于Edge浏览器的资料。配置Selenium Edge有多种方法,但这里只介绍一种方法。 MSEdgeDriver下载地址  此处需要注意将浏览器更新到最新版本,以及选择正确的下载通道 解压下载的压缩

    2023年04月09日
    浏览(40)
  • Python爬虫(2)-Selenium控制浏览器

    Selenium中提供了不少的方法来操作浏览器 使用driver.get(‘网址’)的方式来打开浏览器 driver.refresh() 浏览器切换标签的方法就是, driver.current_window_handle 用selenium点击新打开了一个网页,需要告知selenium目前这个窗口是新的窗口,那么它才能早新的页面进行操作不然的话就无法操

    2024年02月08日
    浏览(37)
  • Python 和 Selenium 的浏览器爬虫

    Selenium 是一款强大的基于浏览器的开源自动化测试工具,最初由 Jason Huggins 于 2004 年在 ThoughtWorks 发起,它提供了一套简单易用的 API,模拟浏览器的各种操作,方便各种 Web 应用的自动化测试。 它的取名很有意思,因为当时最流行的一款自动化测试工具叫做 QTP,是由 Mercur

    2024年02月08日
    浏览(38)
  • python爬虫之selenium模拟浏览器

    之前在异步加载(AJAX)网页爬虫的时候提到过,爬取这种ajax技术的网页有两种办法:一种就是通过浏览器审查元素找到包含所需信息网页的真实地址,另一种就是通过selenium模拟浏览器的方法[1]。当时爬的是豆瓣,比较容易分析出所需信息的真实地址,不过一般大点的网站像

    2024年02月03日
    浏览(44)
  • 干货!一文搞定无头浏览器的概念以及在selenium中的应用

      无头浏览器,即 Headless Browser,是一种没有界面的浏览器。它拥有完整的浏览器内核,包括 JavaScript 解析引擎、渲染引擎等。与普通浏览器最大的不同是,无头浏览器执行过程中看不到运行的界面,但是我们依然可以用 GUI 测试框架的截图功能截取它执行中的页面。在这里强

    2023年04月12日
    浏览(43)
  • Selenium 无头浏览器被知乎限制访问的解决方案

    我尝试使用如下代码爬取知乎的有关内容,出现知乎安全验证界面: 添加启动参数 在网上的许多文章中,反复提到了如下三行代码,然而我将他们加入代码后没有什么效果: JavaScript特殊全局变量 有一些文章提到,通过 WebDriver 启动的网页会存在一些特殊的 JS 变量,这些变

    2024年02月14日
    浏览(30)
  • python使用selenium控制浏览器进行爬虫

    这里以谷歌浏览器为例,需要安装一下chromedriver,其他浏览器也有相对应的driver,chromedriver下载地址:https://googlechromelabs.github.io/chrome-for-testing/ 然后是打开python环境安装一下依赖 pip install selenium ,验证一下控制浏览器是否成功 点击运行脚本可以看到以下页面就成功了。 爬虫

    2024年02月04日
    浏览(49)
  • 【python爬虫】10.指挥浏览器自动工作(selenium)

    上一关,我们认识了cookies和session。 分别学习了它们的用法,以及区别。 还做了一个项目:带着小饼干登录,然后在博客中发表评论。 除了上一关所讲的登录问题,在爬虫过程中,我们还可能会遇到各种各样棘手的问题—— 有的网站登录很复杂,验证码难以破解,比如大名

    2024年02月10日
    浏览(41)
  • 【python爬虫】设计自己的爬虫 4. 封装模拟浏览器 Selenium

    有些自动化工具可以获取浏览器当前呈现的页面的源代码,可以通过这种方式来进行爬取 一般常用的的有Selenium, playwright, pyppeteer,考虑到他们的使用有许多相同之处,因此考虑把他们封装到一套api中 先看基类 Selenium是一个自动化测试工具,利用它可以驱动浏览器完成特定

    2024年02月03日
    浏览(43)
  • python爬虫之selenium库,浏览器访问搜索页面并提取信息,及隐藏浏览器运行

    如果链接简单,爬虫可以通过链接用requests库提取页面信息,如爬取豆瓣top250影片信息,链接简单易懂。参考:爬取豆瓣top250影片信息 但如果遇到一些搜索之类的,基于js动态加载的网页,以上就不适合,如爬虫b站,搜索“爬虫”页面,第一页链接如下,第二页又是很长没规

    2024年01月23日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包