一:前言
在写着自动化测试的脚本时,重新复习了一下正则表达式findall()方法。为了深化印象,输出点东西,就来写个通过正则表达式爬取菜鸟教程标题的小案例。
参考教程:菜鸟教程之Python正则表达式
二:操作
目标:
爬取菜鸟教程首页所有小标题,并输出在控制台。
目标标题:(红色方框那些,爬取页面全部的小标题)
笔者默认大家都安装了python和安装了谷歌的驱动了。
再看看小标题的组成规律:(H4和“【】”)
上代码:
#!/usr/bin/env python3
# -*- coding:utf-8 -*-from selenium import webdriver
import re
import timeclass runoob():def __init__(self):#获取驱动self.browser = webdriver.Chrome()#确定目标网站self.browser.get("https://www.runoob.com/")#窗口最大化self.browser.maximize_window()#隐性等待3秒,打不开页面才报错self.browser.implicitly_wait(3)def close_window(self):#静待5秒time.sleep(5)#退出页面self.browser.quit()def get_title(self):#获取页面源码self.page = self.browser.page_source#匹配标题。小标题都是H4大小的,并且都被“【】”包围着self.titles = re.findall(r'【(.*?)】</h4>', self.page)#循环输出在控制台for title in self.titles:print(title)if __name__ == '__main__':#创建类runoob = runoob()#调用获取小标题方法runoob.get_title()#调用退出窗口方法runoob.close_window()
三:尾言
笔者演示了正则表达式中findall方法比较常见的用法,如果还想深入了解此方法或其它方法,请多看看菜鸟教程。