-
一、动态网页爬虫
1、基本概念
- 动态网页:在网页不重新加载的情况下,通过ajax技术动态更新网站中的局部数据
- AJAX(asynchronous javascript and xml)异步JavaScript和xml,传统传输数据格式是xml语法,现在使用的数据格式基本都是JSON
- 使用Ajax加载的数据查看源代码是找不到的
2、动态网页爬虫的解决方案
- 直接分析Ajax调用的接口,然后通过代码去请求这个接口
- 优点:不需要做一些解析工作,代码量少,性能高
- 缺点:分析接口比较复杂,特别是通过js混淆的接口,要有js功底,否则容易发现是爬虫
- 使用selenium+chromedriver模拟浏览器的行为
- 优点:直接模拟浏览器行为,更稳定
- 缺点:代码量多,性能低
二、Selenium
- Selenium相当于一个机器人,可以模拟人类在浏览器上的行为,比如点击,填充数据,删除cookie。
- chromedriver是一个驱动Chrome浏览器的驱动程序,使用它才可以驱动浏览器。
A、基本使用
-
打开网页地址
driver = webdriver.Chrome(executable_path=‘’)
driver.get(“网页地址”)
from selenium import webdriver driver = webdriver.Chrome(executable_path=r"E:\develop\chromedriver\chromedriver_win32\chromedriver.exe") driver.get("https://www.baidu.com")
-
关闭网页
driver.close()关闭当前网页
driver.quit()退出浏览器,关闭所有网页
-
定位元素
find_element:获取第一个满足条件的元素
find_elements:获取所有满足条件的元素
#根据ID查找,并填充文本框 inputTag = driver.find_element_by_id("kw") inputTag.send_keys("加油啦") # 根据class查找 input_tag = driver.find_element_by_class_name("s_ipt") input_tag.send_keys("努力女孩") input_tag = driver.find_element_by_name("wd") input_tag = driver.find_element_by_tag_name("input") input_tag = driver.find_element_by_xpath("//input[@id='kw']") input_tag = driver.find_element_by_css_selector("#form #kw")
B、表单元素
-
操作input
- driver.find_element_xx()找到需要的元素
- .sendKey(“”)填充值
-
操作checkbox
- driver.find_element_xx()找到需要的元素
- .click进行点击勾选
-
操作select
select元素不能直接点击,因为点击后还要选择元素,所以selenium提供了一个类selenium.webdriver.support.ui.Select将所获得的元素当成参数传到这个类里,创建这个对象就可以对这个对象进行选择了
- selectTag = Select(driver.find_element_xx())选择需要的标签,使用select创建对象
- selectTag.select_by_index(n)根据索引选择
- selectTag.select_by_value(“”)根据值选择
- selectTag.select_by_visible_text(“”)根据可视的文本选择
C、行为链
-
行为链更能模拟人的行为,功能更加强大,更稳定,在自动化测试中非常有用
-
步骤
-
获得驱动
driver = webdriver.Chrome(驱动的绝对地址)
-
打开网址
driver.get(url)
-
封装对象
actions = ActionChains(driver)
-
获得需要操作的标签
driver.find_element_by_xx
-
行为链模拟人类行为
actions.move_to_element(xx)
…
-
运行,执行
actions.perform()
可以让它睡1一秒钟去执行下面的语句time.sleep(1)
from selenium import webdriver from selenium.webdriver import ActionChains #获得驱动,打开网址 driver = webdriver.Chrome(executable_path
-
篇二:爬虫笔记-Selenium动态网页
于 2022-12-03 13:44:07 首次发布