爬取数据时有时候返回的HTML代码中确并没有可用数据,解决此问题可通过
Selenium浏览器自动化测试框架实现获取HTML代码中的可用数据。
思路分析--实现步骤
-
通过pip或其他方式安装selenium模块。
-
安装bs4库
-
在浏览器关于窗口中查看当前浏览器的版本,如图所示
- 打开“http://chromedriver.storage.googleapis.com/index.html”网页地址,选择浏览器对应版本的驱动,这里可以选择版本号前两位相同的任意一个驱动
-
浏览器驱动下载完成后,将chromedriver.exe文件解压在python的安装路径下即可
代码参考
- 导入webdriver模块与BeautifulSoup模块,然后创建浏览器驱动参数对象,并设置相关属性,再发送网络请求,最后解析返回的HTML代码并打印关键代码部分。
"""
@Time : 2021/2/12 21:13
@Auth : Yvon~早安阳光
@File :SeleniumHtm
"""
from selenium import webdriver # 导入浏览器驱动模块
from bs4 import BeautifulSoup # 导入解析HTML代码模块
url = 'https://www.jianshu.com/u/cd9f63a63e4b'
try:
# 浏览器驱动参数对象
chrome_options = webdriver.ChromeOptions()
# 不加载图片
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
# 使用headless无界面浏览器模式
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# 加载谷歌浏览器驱动,填写自己浏览器驱动的实际路径
driver = webdriver.Chrome(options=chrome_options,
executable_path='D:/Python38/chromedriver')
driver.get(url) # 发送网络请求
html = driver.page_source # 获取页面html源代码
# print(html)
html = BeautifulSoup(html, "html.parser") # 解析html代码
# 打印HTML代码中的关键代码
# print(html)
print('获取关键代码为:\n', html.find('div', class_="title"))
driver.quit() # 退出浏览器驱动
except Exception as e:
print('异常信息为:', e)