show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次我们了解了selenium
- selenium是一个驱动真实浏览器的爬虫
- 支持各种系统、很多种主流浏览器
- 把浏览器的各种操作封装成各种语言的接口
- 我们使用python的接口
- 就可以让一个真实浏览器去访问网站
- 从而得到爬取的效果
- 可以爬下来些什么呢?
from selenium.webdriver.firefox.service import Service
from selenium import webdriver
import time
service = Service(executable_path="geckodriver")
driver = webdriver.Firefox(service=service)
driver.get("https://www.bilibili.com/video/BV1Es411Z7MH")
time.sleep(10)
title = driver.title
print(title)
driver.quit()
- 确实可以获得网页标题
- 可以获得整个源文件么?
from selenium.webdriver.firefox.service import Service
from selenium import webdriver
import time
service = Service(executable_path="geckodriver")
driver = webdriver.Firefox(service=service)
driver.get("https://www.bilibili.com/video/BV1Es411Z7MH")
time.sleep(10)
title = driver.title
print(title)
source = driver.page_source.encode("utf-8")
print(source)
driver.quit()
- 确实可以爬取到网页
- 可以把这个网页对接到lxml生成一棵etree么?
from selenium.webdriver.firefox.service import Service
from selenium import webdriver
from lxml import etree
import time
service = Service(executable_path="geckodriver")
driver = webdriver.Firefox(service=service)
driver.get("https://www.bilibili.com/video/BV1Es411Z7MH")
time.sleep(10)
source = driver.page_source
html = etree.HTML(source)
for elem in html.iter():
print(elem.tag,end=",")
driver.quit()
- 尝试xpath
from selenium.webdriver.firefox.service import Service
from selenium import webdriver
from lxml import etree
import time
service = Service(executable_path="geckodriver")
driver = webdriver.Firefox(service=service)
driver.get("https://www.bilibili.com/video/BV1Es411Z7MH")
time.sleep(10)
source = driver.page_source
html = etree.HTML(source)
title = html.xpath("/html/head/title")[0]
print(title.text)
driver.quit()
- 很好用
- 无障碍对接
- 原来用requests获取网页
- 现在用selenium获取网页
- 后面都可以对接lxml
- 而且selenium用的是真是网页
- 还可以获得一些动态加载的数据
- 这次我们尝试用selenium访问了一个网页
- 原理上selenium和requests发请求差不多
- 都是发送请求
- 只不过requests是直接发送请求
- selenium用真实的浏览器发送请求
- 可以动态加载一些后台的一些数据
- 得到网页源文件之后都可以xpath进行筛选提取
- 用selenium还可以做一些什么浏览器才能做的东西么?🤔
- 下次再说👋