Python3爬虫中Selenium的用法详解
Selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作,如点击、输入、滚动等。在Python3爬虫中,Selenium可以用于模拟浏览器行为,实现动态网页的爬取。本文将为您详细讲解Python3爬虫中Selenium的用法,包括Selenium的安装、使用方法、常用API等。过程中提供两个示例说明。
Selenium的安装
在Python3中,可以使用pip命令安装Selenium库。以下是安装Selenium的命令:
pip install selenium
Selenium的使用方法
以下是使用Selenium模拟浏览器行的示例代码:
from selenium import webdriver
# 创建浏览器对象
browser = webdriver.Chrome()
# 打开网页
browser.get('https://www.baidu.com')
# 查找元素并操作
input_box = browser.find_element_by_id('kw')
input_box.send_keys('Python')
submit_button = browser.find_element_by_id('su')
submit_button.click()
# 关闭浏览器
browser.quit()
在上面的代码中,我们使用Selenium库创建了一个Chrome浏览器对象,并使用get()方法打开了百度首页。然后,我们使用find_element_by_id()方法查找了搜索框和搜索按钮,并使用send_keys()方法输入了搜索关键字,最后使用click()方法点击了搜索按钮。最后,我们使用quit()方法关闭了浏览器。
常用API
以下是Selenium库中常用的API:
webdriver.Chrome()
:创建Chrome浏览器对象。browser.get(url)
:打开指定的网页。browser.find_element_by_id(id)
:查找指定id的元素。element.send_keys(text)
:在元素中输入指定的文本。element.click()
:点击元素。browser.quit()
:关闭浏览器。
示例说明
示例一
以下是一个Python,它使用Selenium模拟浏览器行为,爬取了豆瓣电影Top250的数据。
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://movie.douban.com/top250')
movies = []
while True:
# 查找电影列表
movie_list = browser.find_elements_by_css_selector('.grid_view .item')
for movie in movie_list:
title = movie.find_element_by_css_selector('.title').text
rating = movie.find_element_by_css_selector('.rating_num').text
movies.append({'title': title, 'rating': rating})
# 查找下一页按钮
next_button = browser.find_element_by_css_selector('.next a')
if 'disabled' in next_button.get_attribute('class'):
break
# 点击下一页按钮
next_button.click()
browser.quit()
for movie in movies:
print(movie['title'], movie['rating'])
在上面的代码中,我们使用Selenium模拟浏览器行为,打开了豆瓣电影Top250的网页。然后,我们使用find_elements_by_css_selector()方法查找电影列表,并使用find_element_by_css_selector()方法查找电影的标题和评分。我们将电影的标题和评分保存到一个列表中。最后,我们使用print()函数打印了电影的标题和评分。
示例二
以下是一个Python程序,它使用Selenium模拟浏览器行为,爬取了淘宝商品的数据。
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://www.taobao.com')
# 查找搜索框并输入关键字
input_box = browser.find_element_by_id('q')
input_box.send_keys('Python')
submit_button = browser.find_element_by_css_selector('.btn-search')
submit_button.click()
products = []
while True:
# 查找商品列表
product_list = browser.find_elements_by_css_selector('.J_MouserOnverReq')
for product in product_list:
title = product.find_element_by_css_selector('.title').text
price = product.find_element_by_css_selector('.price').text
products.append({'title': title, 'price': price})
# 查找下一页按钮
next_button = browser.find_element_by_css_selector('.J_Ajax.num.icon-tag')
if 'J_Disabled' in next_button.get_attribute('class'):
break
# 点击下一页按钮
next_button.click()
browser.quit()
for product in products:
print(product['title'], product['price'])
在上面的代码中,我们使用Selenium模拟浏览器行为,打开了宝的网页。然后,我们使用find_element_by_id()方法查找搜索框,并使用send_keys()方法输入了搜索关键字。我们使用find_element_by_css_selector()方法查找商品列表,并使用find_element_by_css_selector()方法查找商品的标题和。我们将商品的标题和价格保存到一个列表中。最后,我们使用print()函数打印了商品的标题和价格。
总结
本文为您详细讲解了Python3爬虫中Selenium的用法,包括Selenium的安装、使用方法、常用API等。通过学习本文,您可以更好地掌握Selenium的使用技巧,提高自己的爬虫能力。