爬虫selenium库基础操作

安装chrome浏览器和配置好chromedriver,对应版本查询(win+R,cmd,chromedriver)
python安装好selenium库

1.浏览器窗口相关:
get打开浏览器:

from selenium import webdriver        
browser = webdriver.Chrome() #browser变量名可以自己随便取
browser.get('某个url')

关闭浏览器:

browser.quit()

网页最大化:

browser.maximize_window()      

在这里插入图片描述

2.用xpath定位元素【重点】
在网页用F12,点小箭头找你要的元素,复制这个元素的xpath(就不用自己去找结构层级去写了)
在这里插入图片描述

现在获取到了这个元素,这个xpath相当于是它身份的象征,如同id

browser.find_element_by_xpath('对应的xpath')

当我们想点击这个元素,用.click()

browser.find_element_by_xpath('对应的xpath').click()

想在输入框里面输入内容,用.send_keys()

browser.find_element_by_xpath('对应的xpath').send_keys('要输入的内容')

如果默认输入框里面有内容,用.clear()清除

browser.find_element_by_xpath('对应的xpath').clear()

3.用css_selector定位元素
和xpath同样操作,使用时将 find_element_by_xpath 换成 find_element_by_css_selector 即可
在这里插入图片描述
如果上述两个方法都定位不到元素,可以使用pyautogui库

因为是访问网页点击按钮后跳转,所以最好休息3秒钟再进行其他操作,如果是request直接访问某网页,则通常不需要等待。

time.sleep(3)

我的理解:request直接访问url,selenium模拟打开浏览器访问url
【注意:使用的时候要记得导入库,比如用time.sleep()要记得在代码顶部写好 import time】

4.page_source获取网页源代码

data=browser.page_source()  
print(data)

5.无界面浏览器的设置【爬取大量数据时不想打开多个页面】
主要区别在于把一行代码换成了三行代码

from selenium import webdriver  
      
browser = webdriver.Chrome() #browser变量名可以自己随便取

browser.get('某个url')
from selenium import webdriver   
     
chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(options = chrome_options)#参数名由chrome_options改成了options

browser.get('某个url')

6.子页面、同级页面切换 和 滚轴滚动
(1)切换子页面(网页中的网页)

browser.switch_to.frame(子页面的name值)

(2)切换浏览器同级页面

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/s?rtt=1&bsst=1&cl=2&tn=news&ie=utf-8&word=阿里巴巴")
browser.find_element_by_xpath("//*[@id='1']/div/h3/a").click()  # 模拟点击第一条新闻,会新打开一个网页

handles = browser.window_handles  # 获取浏览器所有窗口句柄,也即各个窗口的身份信息
browser.switch_to.window(handles[0])  # 切换到最开始打开的窗口
browser.switch_to.window(handles[-1])  # 切换到最新(倒数第一个)打开的窗口
data = browser.page_source  # 这里获取到的就是最新打开页面的网页源代码了,因为切换到了它
print(data)  

如果有三个页面就是0,-1,-2

(3)控制滚动轴滚动

#方法1:滚动1个页面高度的距离(非常灵活,强烈推荐)
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')                                        
#方法2:离最顶端向下滚动60000像素距离,通常也就是滚到最下面了
browser.execute_script('document.documentElement.scrollTop=60000')  

大屏电脑一般就是1920*1080像素,滚动60000像素一般也就滚动到最下面了

7.浏览器前进或者后退
回到前一页面:

browser.back()

前往下一页面:

browser.forward()
### Selenium 爬虫使用教程及常见问题解决方案 #### 一、Selenium简介及其应用领域 在当今互联网时代,网页爬虫已成为数据获取的关键手段之一。Selenium作为一种功能强大的自动化测试工具,在网页爬取任务中得到了广泛应用。尽管Chrome浏览器是许多开发者的首选,但在特定的工作场景下,也可能需要用到Edge浏览器来执行自动化操作[^1]。 #### 二、安装配置环境 为了启动基于Selenium的项目,需先完成必要的软件包安装: - 安装Python解释器; - 利用pip命令下载`selenium`:`pip install selenium`; - 下载对应版本的WebDriver驱动程序(如针对Edge浏览器,则应选择Microsoft Edge WebDriver),并将其路径加入系统的PATH变量中; #### 三、基础代码结构展示 下面给出一段简单的Python脚本用于打开指定URL页面,并打印标题内容: ```python from selenium import webdriver driver = webdriver.Edge() # 创建一个新的 Microsoft Edge 实例 driver.get("http://www.example.com") # 访问目标网站 print(driver.title) # 输出当前页面标题 driver.quit() # 关闭浏览器实例 ``` #### 四、处理动态加载的内容 当面对AJAX异步请求更新的部分时,直接定位元素可能会失败。此时可以采用显式等待的方式提高成功率。例如设置最长等待时间为10秒,期间每隔500毫秒检测一次条件是否满足,直到找到所需DOM节点为止[^3]: ```python from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.ID, "myDynamicElement")) ) ``` #### 五、应对HTML标签命名差异带来的挑战 实际开发过程中经常会碰到不同章节间使用的标签名存在区别的情况。对此可以通过XPath表达式的灵活运用加以克服,比如利用`string()`函数强制转换为字符串形式提取文本信息[^4]: ```python import lxml.etree as etree html_content = driver.page_source # 获取整个 HTML 文档源码 tree = etree.HTML(html_content) text_info = tree.xpath('//div/string(.)')[0] # 提取出 div 标签下的纯文本内容 ``` #### 六、遵守法律法规与伦理准则 值得注意的是,在享受技术带来便利的同时也要时刻铭记责任所在——即尊重他人知识产权以及保护个人隐私安全等方面的要求。因此,在实施任何类型的网络抓取活动前都应当充分考虑合法性因素[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值