Day36:动态网页爬取
上一节我们讲解了使用Python爬取静态网页的信息,但是该方法只能直接获取当前网页HTML的信息,现在很多网站都需要点击才能获取更多信息,这种时候就需要用到我们的动态网页爬取了。
在动态网页爬取中,我们经常会使用Selenium库来模拟浏览器行为,并通过浏览器加载和执行JavaScript代码来获取动态生成的内容。本节将以猫眼电影https://www.maoyan.com/board/4?offset=0 为例,讲解如何爬取、处理动态网页,并重点介绍Selenium库的各个函数和方法。
Selenium库基本函数
Selenium库拥有比静态解析库更为复杂的函数与操作,因为它需要模拟浏览器的行为,所以会涉及创建浏览器对象、页面操作、定位元素、等待页面等操作。我们先一起来看一下:
- 创建浏览器对象:
webdriver.Chrome()
:创建Chrome浏览器对象。webdriver.Firefox()
:创建Firefox浏览器对象。webdriver.Edge()
:创建Edge浏览器对象。webdriver.Safari()
:创建Safari浏览器对象。
- 页面操作:
get(url)
:打开指定URL的网页。back()
:返回上一个页面。forward()
:前进到下一个页面。refresh()
:刷新当前页面。
- 定位元素:
find_element(By, value)
:根据定位方式和定位表达式定位单个元素。find_elements(By, value)
:根据定位方式和定位表达式定位多个元素。- 支持的定位方式有:
By.ID
、By.NAME
、By.CLASS_NAME
、By.TAG_NAME
、By.LINK_TEXT
、By.PARTIAL_LINK_TEXT
、By.CSS_SELECTOR
、By.XPATH
。
- 元素操作:
element.click()
:点击元素。element.send_keys(keys)
:向元素发送键盘输入。element.clear()
:清空元素内容。element.text
:获取元素文本内容。element.is_displayed()
:判断元素是否可见。element.is_selected()
:判断元素是否被选中。
- 等待页面元素:
WebDriverWait(driver, timeout).until(EC.condition)
:创建等待对象,等待指定条件满足。- 支持的等待条件有:
EC.presence_of_element_located
、EC.visibility_of_element_located
、EC.element_to_be_clickable
等。
- 浏览器控制:
driver.maximize_window()
:最大化浏览器窗口。driver.minimize_window()
:最小化浏览器窗口driver.switch_to.default_content()
:切换回默认的页面上下文。driver.switch_to.alert
:处理弹出框。driver.execute_script(script)
:执行JavaScript脚本。
爬虫猫眼案例
现在我以猫眼电影https://www.maoyan.com/board/4?offset=0 页面为例,展示如何使用selenium爬取动态网页。
- 导入必要的库:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from s
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
大模型-AI小册 文章被收录于专栏
1. AI爱好者,爱搞事的 2. 想要掌握第二门语言的Javaer或者golanger 3. 决定考计算机领域研究生,给实验室搬砖的uu,强烈建议你花时间学完这个,后续搬砖比较猛 4. 任何对编程感兴趣的,且愿意掌握一门技能的人