链接
文档链接:
- Selenium with Python
- selenium + python 中文文档 (注:这个是上面那个的翻译版本,但是没有上面那个新,建议看英文版)
安装 selenium 模块和 Chrome 浏览器驱动
步骤:
-
安装 Selenium 模块:
pip install selenium
-
下载浏览器驱动(下载即可,无需安装,使用时要指定它的路径):请参考 https://selenium-python.readthedocs.io/installation.html#drivers,本文使用 Chrome 浏览器,注意下载与浏览器对应的版本。
快速入门示例代码
本示例以爬取本人博客为例(输出格式:“- 日期: [博文标题](博文链接URL)”):
import re
from selenium import webdriver
driver = webdriver.Chrome(r"E: estchromedriver_79.0.3945.36_win32chromedriver.exe") # 这里指定前面下载的浏览器驱动路径
# driver.maximize_window()
url = 'https://www.cnblogs.com/itwhite/'
driver.get(url)
page = 1
while True:
print("Page %d: %s" % (page, url))
articles = driver.find_elements_by_css_selector("a.postTitle2")
desc = driver.find_elements_by_css_selector("div.postDesc")
assert len(articles) == len(desc)
for a, d in zip(articles, desc):
href = a.get_attribute("href")
title = a.get_attribute("innerHTML").strip()
date = re.search("(d{4}-d{2}-d{2})", d.get_attribute("innerHTML")).group(1)
print("- %s: [%s](%s)" % (date, title, href))
next = driver.find_element_by_id("nav_next_page").get_attribute("innerHTML")
url = None
if re.search("href", next):
url = re.search('href="(S+)"', next).group(1)
else:
next = driver.find_element_by_id("homepage_bottom_pager").get_attribute("innerHTML")
matched = re.search('href="(S+)">下一页<', next)
if matched:
url = matched.group(1)
if not url:
print("No next page, exit")
break
driver.get(url)
page += 1
driver.close()
输出内容如下(输出的是Markdown格式,已被cnblogs博客系统转换成HTML了):
- 2020-02-18: [置顶] Python 入门书籍文档推荐及学习笔记总结
- 2020-02-10: [置顶] JavaScript 入门书籍推荐及学习笔记总结 -- 《JavaScript权威指南》
- 2020-02-23: Python 杂记:装饰器
- 2020-02-21: Python 杂记:内置函数(filter、map、sorted等)
- 2020-02-20: Python 杂记:特殊方法(Special Methods)
- 2020-02-19: Python 杂记:os.system()、subprocess.run()、call()、check_output()
- 2020-02-18: Python 入门书籍文档推荐及学习笔记总结
- 2020-02-18: Python 杂记:标准输入(stdin)、标准输出(stdout)、标准错误(stdout)
- 2020-02-13: Python 快速入门笔记(10):文件及目录操作
- 2020-02-13: Python 快速入门笔记(9):模块和包
- 2020-02-12: Python 快速入门笔记(8):异常处理
- 2020-02-12: Python 快速入门笔记(7):类和对象
- 2020-02-12: Python 快速入门笔记(6):函数
- 2020-02-12: Python 快速入门笔记(5):语句
- 2020-02-12: Python 快速入门笔记(4):表达式
- 2020-02-12: Python 快速入门笔记(3):常量和变量
- 2020-02-11: 使用 pyenv 工具管理和安装多个 python 版本
- 2020-02-11: CentOS 中安装和更新 git 客户端工具
- 2020-02-10: Python 快速入门笔记(2):数据类型
- 2020-02-10: Python 快速入门笔记(1):简介
- 2020-02-10: JavaScript 入门书籍推荐及学习笔记总结 -- 《JavaScript权威指南》
- 2020-02-07: JavaScript快速入门笔记(15):Web storage 之 localStorage 和 sessionStorage
- 2020-02-06: JavaScript快速入门笔记(14):session
- 2020-02-06: JavaScript快速入门笔记(13):cookie
- 2020-02-05: JavaScript快速入门笔记(12):Ajax之XMLHttpRequest、jQuery、fetch()
- 2020-02-03: JavaScript快速入门笔记(11):事件处理
- 2020-02-01: JavaScript快速入门笔记(10):文档对象模型(DOM)及 document 对象
- 2020-01-31: JavaScript快速入门笔记(9):window对象
- 2020-01-30: JavaScript快速入门笔记(8):全局对象和this指针
- 2020-01-23: JavaScript快速入门笔记(7):对象
- 2020-01-20: JavaScript快速入门笔记(6):函数
- 2020-01-20: JavaScript快速入门笔记(5):语句
- 2020-01-20: JavaScript快速入门笔记(4):表达式
- 2020-01-20: JavaScript快速入门笔记(3):常量和变量
- 2020-01-20: JavaScript快速入门笔记(2):数据类型
- 2020-01-20: JavaScript快速入门笔记(1):简介
- 2020-01-13: 如何获取某个网站IP地址?
- 2015-12-25: C++开发者眼中的Java关键字abstract
- 2015-12-17: Java代码中如何获文件名和行号等源码信息?
No next page, exit