1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python 中 selenium 设置参数 不打开可视化页面 后台执行爬虫程序

Python 中 selenium 设置参数 不打开可视化页面 后台执行爬虫程序

时间:2024-07-01 01:23:07

相关推荐

Python 中 selenium 设置参数 不打开可视化页面 后台执行爬虫程序

前言

在使用 selenium 浏览器渲染技术,爬取网站信息时,默认情况下就是一个普通的纯净的 chrome 浏览器,而我们平时在使用浏览器时,经常就添加一些插件,扩展,代理之类的应用。相对应的,当我们用chrome浏览器爬取网站时,可能需要对这个chrome做一些特殊的配置,以满足爬虫的行为。

常用的控制行为有:

禁止图片和视频的加载:提升网页加载速度。添加代理:用于翻墙访问某些页面,或者应对IP访问频率限制的反爬技术。使用移动头:访问移动端的站点,一般这种站点的反爬技术比较薄弱。添加扩展:像正常使用浏览器一样的功能。设置编码:应对中文站,防止乱码。阻止JavaScript执行。

正文

小编常用的功能就是:禁用浏览器启动,让selenium 操作的就像BeautifulSoup 那样后台执行。

1. 禁用前

随便展示一段selenium 操作的代码,流程如下:打开网页 → 输入搜索内容 → 触发搜索→ 滑动页面→ 关闭网页。

代码展示

#_*_coding:utf-8_*_import timefrom mon.keys import Keys # 模仿键盘,操作下拉框的from selenium import webdriver # selenium驱动from selenium.webdriver.support.wait import WebDriverWait # 导入等待类from selenium.webdriver.support import expected_conditions as EC # 等待条件from mon.by import By# 节点定位def test_open():print("—————————— open ——————————")# 方式一:默认打开浏览器驱动driver = webdriver.Chrome()# 方式二:通过设置参数,不打开浏览器# driver = webdriver.Chrome(options=add_options())driver.get('/')driver.implicitly_wait(5)# 找到id=key的标签_input = driver.find_element(By.ID,'key')# 输入内容,查询商品信息_input.send_keys('iphone14')time.sleep(1)_input.clear()time.sleep(1)_input.send_keys('华为mate50pro')time.sleep(1)_input.send_keys(Keys.ENTER)# 触发点击事件的两种方式:1.调用键盘回车键;2.触发按钮的click事件# driver.find_element(By.CLASS_NAME, 'button.cw-icon').click()# 等待商品列表加载wait = WebDriverWait(driver, 5)wait.until(EC.presence_of_element_located((By.ID, "J_goodsList")))# 滚动到页面底部driver.execute_script('window.scrollTo(0,document.body.scrollHeight)')time.sleep(1)# 滚动到页面顶部driver.execute_script('window.scrollTo(0,0)')time.sleep(1)# 打印看看商品信息list = driver.find_elements(By.CLASS_NAME, "gl-item")for item in list:print(item.text)driver.close()passif __name__ == "__main__":test_open()print("—————————— end ——————————")

效果展示:不仅有程序执行,还会打开浏览器且有操作效果

2. 禁用后

除非是在测试阶段,否则每次执行程序都要弹出一个网页确实非常不友好,我们可以通过设置chrome 浏览器的 options 参数禁用浏览器功能。

options.add_argument('--headless'):无浏览器模式

代码展示:将【禁用前】的代码中,注册selenium驱动的方式切换到【方式二】,然后加入下面的代码。

def add_options():print("—————————— options ——————————")# 创建谷歌浏览器驱动参数对象chrome_options = webdriver.ChromeOptions()# 不加载图片prefs = {"profile.managed_default_content_settings.images": 2}chrome_options.add_experimental_option("prefs", prefs)# 使用无界面浏览器模式!!chrome_options.add_argument('--headless')# 使用隐身模式(无痕模式)chrome_options.add_argument('--incognito')# 禁用GPU加速chrome_options.add_argument('--disable-gpu')return chrome_options

效果展示:没有浏览器,只有后台执行效果

3. 其他参数

因为ChromeOptions 的参数比较多,少部分未经验证,请见谅...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。