Skip to content

Latest commit

 

History

History
128 lines (103 loc) · 3.19 KB

580-565019-爬取网页.sy.md

File metadata and controls

128 lines (103 loc) · 3.19 KB
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

  • 尝试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还可以做一些什么浏览器才能做的东西么?🤔
  • 下次再说👋