python爬虫之使用selenium爬取b站视频信息

前言

在之前提到爬虫时,我想到的步骤大多是:

  1. 查找要爬取内容的页面的url,使用requests库获取响应内容
  2. 内容为html源码则使用BeautifulSoup等工具解析html源码,得到想要的数据
  3. 内容为Json则直接转为Json对象解析
  4. 保存数据

但今天我发现了selenium这个工具,selenium是一套完整的web应用程序测试系统,可以用它来模拟真实浏览器进行测试。在爬虫中使用它的话,我们就可以通过它来与网站进行交互,比如模拟在b站搜索“爱乐之城”,能够获取到搜索结果的页面内容,而不必自己去复制URL了。

使用selenium

安装

python中selenium库的安装依然是傻瓜式:

pip install selenium

不过光有selenium库还不够,还需要下载webdriver,我使用的是chrome浏览器,下载地址:http://npm.taobao.org/mirrors/chromedriver/
下载对应的版本,解压后添加到环境变量中。
查看chrome版本
右上角选项 → \to 帮助 → \to 关于Google Chrome,即可查看版本。
添加环境变量
解压后得到的是chromedriver可执行程序,在windows下把它移动到chrome.exe的目录下:在这里插入图片描述
然后添加到环境变量即可。
在ubuntu下则通过sudo mv chromedriver /usr/local/bin即可。

简单使用

访问页面

from selenium import webdriver

browser = webdriver.Chrome()
browser.get("http://www.baidu.com")
browser.close() 

运行后会打开浏览器窗口并访问百度首页。

进行交互

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

browser = webdriver.Chrome()
browser.get('http://www.baidu.com')
input = browser.find_element(By.ID, 
在某些情况下,像淘宝这类页面,其 Ajax 接口参数复杂,包含加密密钥等,自行构造 Ajax 参数困难,此时使用 Selenium 是方便快捷的抓取方法。Selenium 可在浏览器中运行,模拟用户真实浏览网页操作,能实现浏览器加载页面、搜索关键字和点击翻页等操作,即使是使用异步加载技术的网页,也可模拟翻页获取不同网页的数据 [^1][^2]。 以下是一个简单示例代码,用于使用 Python 结合 Selenium 爬取淘宝商品信息并实现翻页抓取: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time # 初始化浏览器 driver = webdriver.Chrome() # 打开淘宝页面 driver.get('https://www.taobao.com') # 定位搜索框并输入关键词 search_box = driver.find_element(By.ID, 'q') search_box.send_keys('手机') search_box.send_keys(Keys.RETURN) # 等待页面加载 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, 'div.items div.item.J_MouserOnverReq')) ) # 模拟翻页 for i in range(3): # 这里设置翻页次数,例如翻 3 页 # 等待商品信息加载 time.sleep(3) # 获取当前页面商品信息 items = driver.find_elements(By.CSS_SELECTOR, 'div.items div.item.J_MouserOnverReq') for item in items: try: title = item.find_element(By.CSS_SELECTOR, 'div.row.row-2.title').text price = item.find_element(By.CSS_SELECTOR, 'strong').text print(f'商品标题: {title}, 价格: {price}') except Exception as e: print(f"Error: {e}") # 点击下一页 try: next_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, 'li.next')) ) next_button.click() except Exception as e: print(f"翻页失败: {e}") # 关闭浏览器 driver.quit() ``` 上述代码实现了打开淘宝页面,搜索“手机”关键词,然后模拟翻页 3 次,每次翻页后获取商品的标题和价格信息并打印。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值