python selenium禁止加载某些请求的实现

目录
  • 问题描述
  • 解决方案
  • 参考

问题描述

通过selenium请求目标网站时候, 真实数据(我这里是验证码图片)已经加载出来, 由于网站做了第三方上报所以得等待很久, 但是上报这个请求不是必须的.

例如

验证码已经加载完成, 但是huatuo.qq.com响应时间过长 , webdriver.get()的机制是等待请求的url响应全部完成才进行下一步. 显示等待和隐式等待的作用是每隔多少秒来检测一下这个地址是否加载完成, 所以此处不生效.

那我要做的是: 当请求目标url时候, 希望webdriver不上报或者屏蔽huatuo.qq.com…这样就能节省大量时间, 从而进行下一步操作

解决方案

在通过selenium打开目标url后, 植入js插件, 通过插件来屏蔽上报url

配置selenium属性, 添加屏蔽规则

chrome_options.add_argument('--host-resolver-rules=MAP report.huatuo.qq.com 127.0.0.1')

最终效果

这样就能专注于目标url, 更快的执行下一步.

其他属性配置

options.add_argument(‘headless') # 无头模式
options.add_argument(‘window-size={}x{}'.format(width, height)) # 直接配置大小和set_window_size一样
options.add_argument(‘disable-gpu') # 禁用GPU加速
options.add_argument(‘proxy-server={}'.format(self.proxy_server)) # 配置代理
options.add_argument('–no-sandbox') # 沙盒模式运行
options.add_argument('–disable-setuid-sandbox') # 禁用沙盒
options.add_argument('–disable-dev-shm-usage') # 大量渲染时候写入/tmp而非/dev/shm
options.add_argument('–user-data-dir={profile_path}'.format(profile_path)) # 用户数据存入指定文件
options.add_argument('no-default-browser-check) # 不做浏览器默认检查
options.add_argument("–disable-popup-blocking") # 允许弹窗
options.add_argument("–disable-extensions") # 禁用扩展
options.add_argument("–ignore-certificate-errors") # 忽略不信任证书
options.add_argument("–no-first-run") # 初始化时为空白页面
options.add_argument('–start-maximized') # 最大化启动
options.add_argument('–disable-notifications') # 禁用通知警告
options.add_argument('–enable-automation') # 通知(通知用户其浏览器正由自动化测试控制)
options.add_argument('–disable-xss-auditor') # 禁止xss防护
options.add_argument('–disable-web-security') # 关闭安全策略
options.add_argument('–allow-running-insecure-content') # 允许运行不安全的内容
options.add_argument('–disable-webgl') # 禁用webgl
options.add_argument('–homedir={}') # 指定主目录存放位置
options.add_argument('–disk-cache-dir={临时文件目录}') # 指定临时文件目录
options.add_argument(‘disable-cache') # 禁用缓存
options.add_argument(‘excludeSwitches', [‘enable-automation']) # 开发者模式

参考

其他详细配置 请点击

到此这篇关于python selenium禁止加载某些请求的实现的文章就介绍到这了,更多相关python selenium禁止加载某些请求内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python selenium页面加载慢超时的解决方案

    开发环境: win10-64  python2.7.16  chrome77 from selenium import webdriver driver = webdriver.Chrome(executable_path='chromedriver.exe') driver.get('http://全部加载完成超级慢的网站') user = 'abc' pwd = '123 driver.find_element_by_id('email').send_keys(user) driver.fi

  • 浅谈selenium如何应对网页内容需要鼠标滚动加载的问题

    相信大家在selenium爬取网页的时候都遇到过这样的问题:就是网页内容需要用鼠标滚动加载剩余内容,而不是一次全部加载出网页的全部内容,这个时候如果要模拟翻页的时候就必须加载出全部的内容,不然定位元素会找不到,出现报错. 这里提供两种方法供大家参考 一,通过selenium模拟浏览器,然后设置浏览器高度足够长,最后延时使之能够将页面的内容都能够加载出来 import time from selenium import webdriver driver = webdriver.Firefox()

  • Selenium 模拟浏览器动态加载页面的实现方法

    相信爬取大公司的数据时,常常会遇到页面信息动态加载的问题, 如果仅仅使用content = urllib2.urlopen(URL).read(),估计信息是获取不全的,这时候就需要模拟浏览器加载页面的过程, selenium提供了方便的方法,我也是菜鸟,试了很多种方式,下面提供觉得最靠谱的(已经证明对于爬取新浪微博的topic.twitter under topic完全没问题). 至于下面的browser变量是什么,看前面的几篇文章. 首先是请求对应的URL: right_URL = URL.

  • python3+selenium获取页面加载的所有静态资源文件链接操作

    软件版本: python 3.7.2 selenium 3.141.0 pycharm 2018.3.5 具体实现流程如下,废话不多说,直接上代码: from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.desired_capabilities import DesiredCapabilities d = Desired

  • Python使用Selenium爬取淘宝异步加载的数据方法

    淘宝的页面很复杂,如果使用分析ajax或者js的方式,很麻烦 抓取淘宝'美食'上面的所有食品信息 spider.py #encoding:utf8 import re from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.by import By from selenium.webdriver.support.ui

  • python selenium禁止加载某些请求的实现

    目录 问题描述 解决方案 参考 问题描述 通过selenium请求目标网站时候, 真实数据(我这里是验证码图片)已经加载出来, 由于网站做了第三方上报所以得等待很久, 但是上报这个请求不是必须的. 例如 验证码已经加载完成, 但是huatuo.qq.com响应时间过长 , webdriver.get()的机制是等待请求的url响应全部完成才进行下一步. 显示等待和隐式等待的作用是每隔多少秒来检测一下这个地址是否加载完成, 所以此处不生效. 那我要做的是: 当请求目标url时候, 希望webdri

  • Python实现动态加载模块、类、函数的方法分析

    本文实例讲述了Python实现动态加载模块.类.函数的方法.分享给大家供大家参考,具体如下: 动态加载模块: 方式1:系统函数__import__() 方式2:imp, importlib 模块 方式3:exec 函数 动态加载类和函数 首先,使用加载模块,使用内置函数提供的反射方法getattr(),依次按照层级获取模块->类\全局方法->类对象\类方法. test_import_module.py class ClassA: def test(self): print('test') in

  • Python pycharm 同时加载多个项目的方法

    在pycharm中只能一个项目存在,想打开另一个项目只能建一个新窗口或者把当前窗口覆盖掉. 在pycharm中其实可以同时打开多个项目: 1.file->setting->project 2.选择project structure,在窗口右侧的add content root 中添加要显示的项目 以上这篇Python pycharm 同时加载多个项目的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 解决Python 使用h5py加载文件,看不到keys()的问题

    python 3.x 环境下,使用h5py加载HDF5文件,查看keys,如下: >>> import h5py >>> f = h5py.File("a.h5",'r') >>> f.keys() 结果看不到keys: KeysView(<HDF5 file "a.h5" (mode r)>) 原因主要是 python2.x 和 python3.x对keys方法的返回处理不同. 官方说明如下: Wh

  • Python 词典(Dict) 加载与保存示例

    Dict的加载: import json def load_dict(filename): '''load dict from json file''' with open(filename,"r") as json_file: dic = json.load(json_file) return dic Dict的保存: import json import datetime import numpy as np class JsonEncoder(json.JSONEncoder):

  • Python自动重新加载模块详解(autoreload module)

    守护进程模式 使用python开发后台服务程序的时候,每次修改代码之后都需要重启服务才能生效比较麻烦. 看了一下Python开源的Web框架(Django.Flask等)都有自己的自动加载模块功能(autoreload.py),都是通过subprocess模式创建子进程,主进程作为守护进程,子进程中一个线程负责检测文件是否发生变化,如果发生变化则退出,主进程检查子进程的退出码(exist code)如果与约定的退出码一致,则重新启动一个子进程继续工作. 自动重新加载模块代码如下: autorel

  • Python如何重新加载模块

    问题 你想重新加载已经加载的模块,因为你对其源码进行了修改. 解决方案 使用imp.reload()来重新加载先前加载的模块.举个例子: >>> import spam >>> import imp >>> imp.reload(spam) <module 'spam' from './spam.py'> >>> 讨论 重新加载模块在开发和调试过程中常常很有用.但在生产环境中的代码使用会不安全,因为它并不总是像您期望的那样

  • Python使用tkinter加载png、jpg等图片

    首先PhotoImage注意这里只支持gif格式的图片 photo = PhotoImage(file="D:/python/images/02.gif") 发现tkinter是只支持gif的格式,如果要加载png或者jpg的话就要使用PIL模块 from tkinter import * from PIL import Image, ImageTk root = Tk() root.title('测试组python毕业题') img = Image.open('ques.png')

  • 利用python进行数据加载

    前言 最近参加了datawhale的组队学习活动,在组队学习动员下,开始通过强迫自己输出来实现更好的输入与处理,6-15开始自己的第一次文章发布,我会把自己这个真的很小白遇到的问题写出来,希望能给屏幕前小白的你带来帮助. 工作中大量繁琐的自动化,把以前在学校摸过的python重新捡起来,不成体系的.拼图一样把需要的工作搭建起来,工作暂时是可用上了,每天节省了至少3个小时的数据处理工作,手里拿着python这个锤子,看什么都像钉子. 首先,你要先学会安装软件,anaconda软件,安装成功后,你点

随机推荐