Selenium 快速入门笔记和代码示例(Python版)
链接
文档链接:
- 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:\test\chromedriver_79.0.3945.36_win32\chromedriver.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:
- 2020-02-10:
- 2020-02-23:
- 2020-02-21:
- 2020-02-20:
- 2020-02-19:
- 2020-02-18:
- 2020-02-18:
- 2020-02-13:
- 2020-02-13:
- 2020-02-12:
- 2020-02-12:
- 2020-02-12:
- 2020-02-12:
- 2020-02-12:
- 2020-02-12:
- 2020-02-11:
- 2020-02-11:
- 2020-02-10:
- 2020-02-10:
- 2020-02-10:
- 2020-02-07:
- 2020-02-06:
- 2020-02-06:
- 2020-02-05:
- 2020-02-03:
- 2020-02-01:
- 2020-01-31:
- 2020-01-30:
- 2020-01-23:
- 2020-01-20:
- 2020-01-20:
- 2020-01-20:
- 2020-01-20:
- 2020-01-20:
- 2020-01-20:
- 2020-01-13:
- 2015-12-25:
- 2015-12-17:
No next page, exit