来详细讲解一下"Python爬虫之selenium模块"的完整攻略。
什么是selenium模块
Selenium是一个自动化测试框架,可以通过编写程序模拟人为操作浏览器完成任务。由于其自动化浏览器的能力,selenium也可以用来编写网页爬虫。与常见的 requests、BeautifulSoup 等实现解析 HTML 的方式不同,Selenium 是启动一个真正的浏览器,通过自动化方式,获取到浏览器中的 HTML 数据。因此,Selenium 可以更好地处理那些由 JavaScript 渲染的页面,这是常规的 requests 和 BeautifulSoup 是难以处理的。
下面,进入具体的使用。
安装selenium模块
安装selenium模块很简单,只需要使用pip安装即可:
pip install selenium
爬虫示例1:使用selenium模拟浏览器行为
示例1中我们用selenium模拟登陆新浪微博,然后获取登陆后首页的内容。下面是实现的代码:
from selenium import webdriver
import time
# 指定chrome driver的位置
browser = webdriver.Chrome('/path/to/chromedriver')
# 打开新浪微博首页
browser.get('https://www.weibo.com')
# 如果该页面有登陆系统,则填入账号密码并提交
element = browser.find_element_by_css_selector('.login_name input[node-type="username"]') # 查询账号输入框
element.clear() # 输入框清空
element.send_keys('your_username') # 输入账号
element = browser.find_element_by_css_selector('.login_name input[node-type="password"]') # 查询密码输入框
element.clear() # 输入框清空
element.send_keys('your_password') # 输入密码
element = browser.find_element_by_css_selector('.W_login_form a[node-type="submitBtn"]') # 查询登陆按钮
element.click() # 点击登陆按钮
# 等待页面加载
time.sleep(5)
# 打印登陆后页面的源码
print(browser.page_source)
# 关闭浏览器窗口
browser.close()
爬虫示例2:使用selenium模拟获取动态数据
示例2中,我们使用selenium爬取一个类似于天气预报的动态数据。下面是实现的代码:
from selenium import webdriver
import time
# 指定chrome driver的位置
browser = webdriver.Chrome('/path/to/chromedriver')
# 打开一个包含动态数据的网站
browser.get('https://www.tianqi.com/yubao/')
# 等待页面加载
time.sleep(5)
# 获取每一天的天气信息
weather_info = []
for i in range(1, 8):
# 获取某个日期的元素
element = browser.find_element_by_css_selector('.l7d_1 #day' + str(i))
# 获取日期和天气信息
date = element.find_element_by_css_selector('.week').text
weather = element.find_element_by_css_selector('.wea').text
# 添加到天气信息列表中
weather_info.append(date + ': ' + weather)
# 输出结果
for info in weather_info:
print(info)
# 关闭浏览器窗口
browser.close()
总结
本文介绍了selenium模块的基本用法,包含了两个具有代表性的示例。其中,通过示例1我们学会了模拟浏览器行为爬取登陆后的信息,而示例2让我们了解到了如何爬取动态数据。selenium还有很多其他的用法,可以根据自己的需求不断学习和拓展。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬虫之selenium模块 - Python技术站