首页 > 编程语言 >Python:Selenium爬虫

Python:Selenium爬虫

时间:2024-01-24 23:06:30浏览次数:43  
标签:webdriver 浏览器 Python Selenium driver 爬虫 add options selenium

常用语法

驱动常用方法

driver.maximize_window()          # 最大化浏览器
driver.set_window_size(w,h)       # 设置浏览器大小 单位像素
driver.set_window_position(x,y)   # 设置浏览器位置
driver.back()                     # 后退操作
driver.forward()                  # 前进操作
driver.refresh()                  # 刷新操作
driver.close()                    # 关闭当前主窗口(主窗口:默认启动那个界面,就是主窗口)
driver.quit()                     # 关闭driver对象启动的全部页面
driver.get()                      #要打开的网址
driver.title                      # 获取当前页面title信息
driver.current_url                # 获取当前页面url信息
driver.get_screenshot_as_file('截图.png')# 截图预览
driver.name                       # 浏览器名称
driver.page_source                # 网页源码

延时等待

隐式等待

from selenium import webdriver      #导包
driver = webdriver.Chrome()         #获取浏览器驱动对象
driver.implicitly_wait(20)          #隐示等待,传入等待时间,加载完成后立即下一步,不再等待--建议

强制等待

from time import sleep
sleep(2)    #传入等待时间:强制等待

显式等待

from selenium.webdriver.support.wait import WebDriverWait       # 导包
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# WebDriverWait 需要传入的是驱动器对象,总体等待时间和刷新时间间隔时间间隔默认0.5
# Presence_of_element_located   表示元素是否存在  必须以元组的形式传入,所以使用到By方法进行定位
WebDriverWait(driver,30,0.5).until(EC.presence_of_element_located((By.ID,'kw')))

浏览器选项

options = webdriver.ChromeOptions()              # 创建配置对象
options.add_argument('lang=zh_CN.UTF-8')         # 设置中文
options.add_argument('--headless')               # 无头参数,浏览器隐藏在后台运行
options.add_argument('--disable-gpu')            # 禁用GPU加速
options.add_argument('--start-maximized')        # 浏览器最大化
options.add_argument('--window-size=1920x1024')  # 设置浏览器分辨率(窗口大小)
options.add_argument('--user-agent=""')          # 设置请求头的User-Agent
options.add_argument('--incognito')              # 隐身模式(无痕模式)
options.add_argument(f'--proxy-server={proxy}')  # 添加IP代理 proxy=f"http://{ip}:{port}"
driver.set_page_load_timeout(20)                 # 设置连接超时20秒
options.add_experimental_option('detach', True)  # 不自动关闭浏览器

driver = webdriver.Chrome(options=options)  # 创建浏览器对象
driver.get('https://www.baidu.com')

By方法

# selenium 4.17.1
# chormedriver 120.0.6099.109

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By  # ID检索数据
from selenium.common.exceptions import NoSuchElementException # 导入异常种类用于try


# 启动无界面引导
opt = webdriver.ChromeOptions()
opt.add_argument("--headless")

# 实例化WebDriver对象
wd = webdriver.Chrome(options=opt,service=Service(r'D:\ChormDriver\chromedriver-win64\chromedriver.exe'))

# webdriver获取网址
wd.get('https://www.byhy.net/_files/stock1.html')  # http请求

# 根据ID获取元素
stock_input = wd.find_element(By.ID, 'kw')  # 返回对象的句柄
stock_input.send_keys('通讯')  # 发送数据
stock_sear =  wd.find_element(By.ID, 'go')
stock_sear.click()

wd.implicitly_wait(30) # 隐性等待30s,等待网页加载

# 根据class name获取元素
stockname_list = wd.find_elements(By.CLASS_NAME,'result-item') # 返回所有的对象列表

if len(stockname_list) == 0:
    print("没有获取到任何对象,程序退出")
    exit()
else:
    for item in stockname_list: # 获取对象的文本内容
        print(item.text)

# 退出
wd.close()

# 程序运行完会自动关闭浏览器,就是很多人说的闪退
# 这里加入等待用户输入,防止闪退
input('等待回车键结束程序')

程序打包

pip install pyinstaller //安装插件
pyinstaller 定位元素.py //开始打包

  注意exe程序的位置不能移动,否则无法加载外部库。

标签:webdriver,浏览器,Python,Selenium,driver,爬虫,add,options,selenium
From: https://www.cnblogs.com/YiMo9929/p/17986033

相关文章

  • PYTHON 用几何布朗运动模型和蒙特卡罗MONTE CARLO随机过程模拟股票价格可视化分析耐克
    原文链接:http://tecdat.cn/?p=27099最近我们被客户要求撰写关于蒙特卡罗的研究报告,包括一些图形和统计输出。金融资产/证券已使用多种技术进行建模。该项目的主要目标是使用几何布朗运动模型和蒙特卡罗模拟来模拟股票价格。该模型基于受乘性噪声影响的随机(与确定性相反)变量该项......
  • Python 变量?对象?引用?赋值?一个例子解释清楚
    哈喽大家好,我是咸鱼。前天有个小伙伴找到我,给了我一段python代码:a=[1,2]a[1]=aprint(a[1])然后问我为什么结果是[1,[...]],我一看这个问题有意思,我说三言两语解释不清楚,我写篇文章到时候你看下吧,于是有了今天这篇文章。在正式开始之前,让我们先弄清楚一些概念。对......
  • Python三方库:Pika(RabbitMQ基础使用)
    Python有多种插件都支持RabbitMQ,本文介绍的是RabbitMQ推荐的Pika插件。使用pip直接安装即可pipinstallpika。一、RabbitMQ简介1.MQ简介MQ(MessageQueue,消息队列),是一个在消息传输过程中保存消息的容器,多用在分布式系统之间进行通信。MQ优势应用解耦:提高系统容错性和可......
  • Python处理Excel表格的终极指南
    案例学Python(进阶篇)源代码.zip 链接:https://pan.quark.cn/s/c00aefe52fdc案例学Python(基础篇)源代码.zip 链接:https://pan.quark.cn/s/15c0b553b6b8引言Excel表格在数据处理和日常办公中扮演着不可或缺的角色。本文将详细介绍如何使用Python中的openpyxl库来处理Excel文件,......
  • python之内置函数
    内置函数                    1.absdefabs(*args,**kwargs):#realsignatureunknown"""Returntheabsolutevalueoftheargument."""pass翻译:返回参数的绝对值1#!/usr/bin/python2print(abs(-2))#绝对值View......
  • 使用SM.MS做MarkDown图床(Python脚本)
    缘起曾经写过一篇使用博客园做MarkDown图床的文章,好像也帮助到了很多小伙伴;从那时起,我也是一直把博客园当图床来用的,挺惭愧。一方面,白嫖博客园,而博客园的现状也不太好;另一方面,免费总是有风险的,以前有些文章里的图片链接是语雀或者Gitee的,但是现在这些图片都挂掉了。我想,是时......
  • python 面向对象专题(23):基础(14)类对象、实例对象、类属性、实例属性、类方法、实例方法
    1简易理解(快速理解)类对象:定义的类就是类对象实例对象:类对象实例化后就是实例对象类属性:定义在init外部的变量实例属性:定义在__init__内部的带有self.的变量类方法:定义在类对象中且被@classmethod装饰的方法就是类方法实例方法:定义在类对象中,且......
  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。简介关键数据记录是We......
  • Python多任务协程:编写高性能应用的秘密武器
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。多任务协程编程协程,又......
  • Python多任务协程:编写高性能应用的秘密武器!
    多任务协程编程协程,又称微线程,纤程。英文名Coroutine。协程也是一种轻量级的多任务编程技术,它可以在同一个线程中实现多个任务的切换和调度。协程通过任务的暂停和恢复,避免了线程切换的开销并减少了锁的使用。协程常用于异步编程场景,比如网络编程和IO密集型任务。最大的优势就是协......