python网络爬虫之selenium库(二)

目录

一.获取网页资源

1.获取渲染后的网页代码

2.获取网页中的指定元素

3.在元素中输入信息

二.更多操作

①模拟点击

②WebDriver对象中的方法

三.不启动浏览器获取网页资源


一.获取网页资源

1.获取渲染后的网页代码

使用 driver.page_source 获取浏览器渲染后的网页源代码(含动态加载内容图片音频等)。

优势:自动渲染,避免被反爬机制检测(模拟真实浏览器行为)。

python 复制代码
import requests
import re
from selenium import webdriver
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get("https://www.ptpress.com.cn/search?keyword=c++&jc=")
print(driver.page_source)

2.获取网页中的指定元素

我们可以使用正则表达式的方法进行过滤来获取我们想要的元素,而WebDriver对象中也提供了大量用于获取指定网页元素的方法

python 复制代码
driver.find_element(self, by=By.  , value=" ")

返回的元素不止一个则用**find_elements()**方法,参数不变

我们可以在By.后面填写如下的属性ID,NAME等,value中则填写在需要爬取的网页中的对应属性的信息

python 复制代码
class By(object):
    """
    Set of supported locator strategies.
    """

    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"

如下演示找到百度识图中的上传图片对应的元素

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.options import Options

edge_options = Options()
edge_options.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get(r"https://graph.baidu.com/pcpage/index?tpl_from=pc")
t_element = driver.find_element(by=By.NAME,value='file')

3.在元素中输入信息

python 复制代码
driver.find_element(...).send_keys(输入的字符串信息)

我们用send_keys()方法实现在元素中传递信息

例如在搜索框输入信息python,浏览器会自动输入不用我们手动输入

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.edge.options import Options
edge_options = Options()
edge_options.binary_location=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
driver = webdriver.Edge(options=edge_options)
driver.get("https://www.ptpress.com.cn/")
driver.find_element(By.TAG_NAME,value='input').send_keys("python")

补充:如果我们将最后一个方法参数添加Keys.RETURN即send_keys("python"+Keys.RETURN)则表示输入信息后按下enter键

二.更多操作

①模拟点击

获取网页元素后可以使用click()方法实现点击该元素

python 复制代码
driver.find_element(...).click()
②WebDriver对象中的方法

back() :返回到上一个页面

forward():前进到下一个页面

refresh():刷新当前页面

quit():关闭当前浏览器

close():关闭当前标签页

三.不启动浏览器获取网页资源

在驱动浏览器时,可以设置无窗口模式,即驱动浏览器后并不会打开浏览器窗口,而是将网页代码在内存中处理,类Options中的add_argument()方法即可实现不启动浏览器的情况下获取网页资源

写下参数--headless即表明不启动浏览器窗口

python 复制代码
Options().add_argument('--headless')
相关推荐
星核0penstarry5 小时前
试一试用gr.Workflow把AI多步骤串联变成可视化画布
人工智能·python·ai作画·api·ai编程·工作流·api聚合平台
taller_20006 小时前
【005】PiE 与传统 VBA 的核心区别
python·vba·pie·py
海兰6 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融
大衛說6 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
小猴子爱上树6 小时前
跨境电商翻译工具推荐:批量图片翻译、视频字幕翻译、智能抠图一站式搞定
人工智能·python·音视频
丈剑走天涯7 小时前
基于 Python 3 语法的 PyCharm 练习示例,涵盖列表操作、类型判断及数据清洗等核心知识点
windows·python·pycharm
————A7 小时前
Agent 接收用户上传文件
人工智能·笔记·python·状态模式
可乐鸡翅yeah_7 小时前
hls.js 内存泄漏实战排查,直播 M3U8 长时间播放异常定位方案
开发语言·javascript·python·django·ecmascript·m3u8·m3u8在线
可乐鸡翅yeah_7 小时前
第三方接口对接 M3U8 流媒体排坑实战,解决外部服务商流兼容难题
前端·javascript·python·django·html·m3u8·m3u8在线
金融小师妹7 小时前
多因子智能推演:黄金震荡回升,杰克逊霍尔“沃什首秀”政策如何重塑金价路径的AI预测框架
大数据·人工智能·python·线性回归