wordpress站外链接,南宁网站建设哪家公司好,dw用ps切片做网站,企业网站最下面的那栏叫啥1、无头浏览设置和规避爬虫检测
问题一#xff1a;有界面时可以展示的元素#xff0c;无头模式报错element not interactable
解决方法#xff1a;通过错误截图发现#xff0c;页面上有该元素#xff0c;但是页面不够大#xff0c;没有显示想定位的元素。
from seleni…1、无头浏览设置和规避爬虫检测
问题一有界面时可以展示的元素无头模式报错element not interactable
解决方法通过错误截图发现页面上有该元素但是页面不够大没有显示想定位的元素。
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import Chromechrome_options Options()
chrome_options.add_argument(--headless) # 设置无头浏览
chrome_options.add_argument(--disable-gpu) # 无头浏览禁止调用gpu
chrome_options.add_argument(--window-size1920,1200) # 无头浏览配置1080p分辨率不然会报错
chrome_options.add_argument(user-agentMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36)
chrome_options.add_experimental_option(useAutomationExtension, False) # 防止检测
chrome_options.add_argument(--mute-audio) # 静音
chrome_options.add_experimental_option(excludeSwitches, [enable-automation, enable-logging]) # 防止检测、禁止打印日志
chrome_options.add_argument(--disable-blink-featuresAutomationControlled)
chrome_options.add_argument(--ignore-certificate-errors) # 忽略证书错误
chrome_options.add_argument(--ignore-ssl-errors) # 忽略ssl错误
chrome_options.add_argument(–log-level3)
chrome_options.add_argument(--start-maximized)
chrome_options.add_experimental_option(detach, True)
browser Chrome(optionschrome_options)
2、多个chromedriver程序同时运行
使用多进程确保每个 chromedriver.exe 都能单独执行多线程是不行的
from concurrent.futures import ThreadPoolExecutor # 多线程
from concurrent.futures import ProcessPoolExecutor # 多进程executor ThreadPoolExecutor(5) # 创建线程池执行器
pool ProcessPoolExecutor(5) # 创建进程池执行器
app Flask(__name__)app.route(/aut/wsla_api, methods[post])
def wsla_api():form_data request.get_json() # 接收的数据包from flask_code.wsla_automation import zdls_start # 要执行到函数# zdls_start为执行函数form_data 为函数传的参数# executor.submit(zdls_start, form_data) # 将程序放入进程池中pool.submit(zdls_start, form_data) # 将程序放入进程池中return 成功if __name__ __main__:BASE_DIR os.path.dirname(os.path.abspath(__file__))config configparser.ConfigParser()config.read(os.path.join(BASE_DIR, config.ini), encodingutf-8)port config.get(flask_api, port)print(Flask后台已开启~)server pywsgi.WSGIServer((0.0.0.0, int(port)), app)server.serve_forever()3、get直接返回不再等待界面加载完成
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities# get直接返回不再等待界面加载完成desired_capabilities DesiredCapabilities.CHROMEdesired_capabilities[pageLoadStrategy] none# 创建chrome参数对象
options webdriver.ChromeOptions()
options.add_argument(--no-sandbox) # 解决DevToolsActivePort文件不存在的报错
options.add_argument(window-size1600x900) # 指定浏览器分辨率
options.add_argument(--disable-gpu) # 谷歌文档提到需要加上这个属性来规避bug
# options.add_argument(--hide-scrollbars) # 隐藏滚动条, 应对一些特殊页面
options.add_experimental_option(excludeSwitches, [enable-automation]) # 开启管理者模式
# options.add_argument(blink-settingsimagesEnabledfalse) # 不加载图片, 提升速度
# 禁止图片和css加载
prefs {profile.managed_default_content_settings.images: 2, permissions.default.stylesheet: 2}
options.add_experimental_option(prefs, prefs)
# options.add_argument(--headless) # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
browser.set_page_load_timeout(timeout)
browser.set_script_timeout(timeout) # 这两种设置都进行才有效browser webdriver.Chrome(executable_path/root/桌面/youlv/driver/chromedriver,chrome_optionsoptions, desired_capabilitiesdesired_capabilities)
# browser webdriver.Firefox(executable_path/usr/bin/geckodriver)