Selenium抓取HTML代码中的可用数据

爬取数据时有时候返回的HTML代码中确并没有可用数据,解决此问题可通过
Selenium浏览器自动化测试框架实现获取HTML代码中的可用数据。

思路分析--实现步骤

  • 通过pip或其他方式安装selenium模块。


    安装selenium.png
  • 安装bs4库


    安装bs4库.png
  • 在浏览器关于窗口中查看当前浏览器的版本,如图所示


    Google Chrome浏览器版本.png
  • 打开“http://chromedriver.storage.googleapis.com/index.html”网页地址,选择浏览器对应版本的驱动,这里可以选择版本号前两位相同的任意一个驱动
  • 浏览器驱动下载完成后,将chromedriver.exe文件解压在python的安装路径下即可


    驱动下载.png

    放置在Python安装路径下.png

代码参考

  • 导入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)
运行结果.png

推荐阅读更多精彩内容