欢迎关注公众号K的笔记阅读博主更多优质学习内容
上一篇内容:Python爬虫初级(九)—— ajax 详解
Selenium 库的安装
Selenium 的安装比起其他 python 库的安装稍显复杂,下面对此做简要介绍:
首先自然是 pip install selenium,然后我们需要安装对应的浏览器 driver,driver是什么呢,在介绍怎么安装之前,我们先看下面这两行代码:
from selenium import webdriver
driver = webdriver.Firefox()
也就是说我们 selenium 是需要启用 Firefox 等浏览器才能执行某些操作的,因此我们需要让 selenium 可以通过某种方式连接到我们的浏览器。
Firefox driver 的安装
直接戳 https://github.com/mozilla/geckodriver/releases,在下面的这些地址中找到适合自己系统的安装包进行安装:
相应的,Chrome浏览器需要安装chromedriver,IE浏览器要安装IEdriver。
driver的路径可以直接放在python路径下,我这里把driver放在了python的Scripts路径下,同时把script路径加入环境变量。也可以选择将相应的 driver 安装到其他文件夹中,但要记得将这个文件夹添加到环境变量 PATH 中
Chrome driver
Chrome driver 有两个下载地址:
1、http://chromedriver.storage.googleapis.com/index.html
2、https://npm.taobao.org/mirrors/chromedriver/
只需要记得一定要下载对应的版本即可!
同时 selenium 还支持 IE 浏览器,因为想来也没什么人会用,有需要的就自行安装吧。
Selenium 入门
这里直接通过代码方式给大家演示 Selenium 的使用,大家并不需要了解每个语句的具体运作,只需要了解每条代码的大体意思即可:
from selenium import webdriver
driver = webdriver.Firefox()
这部分代码是用来导入 selenium 库,此时会直接启动一个 Firefox 界面,它是由 selenium 直接控制的,我打开的是一个空白标签页:
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("P2P")
driver.find_element_by_id("su").click()
这三行代码会打开搜索框,清空搜索框内容,输入 P2P 字样,点击搜索,其中的 id 内容正是指向相应位置(点击按钮或输入框)的定位。
e_items = driver.find_elements_by_xpath("//*[@class='result c-container ']")
print("\n".join([e.find_element_by_tag_name("a").text for e in e_items]))
# P2P种子搜索器_p2psearcher官方下载【种子搜索神器】-华军软件园
# P2P金融_百度百科
# P2P_最有钛度的P2P资讯-钛媒体官方网站
# 种子搜索神器_p2p种子搜索器下载[p2psearcher]下载之家
# 网贷之家-中国普惠金融投资理财行业门户_P2P网贷银行存款贷款保险...
# 富金利_P2P平台_专业安全的P2P网贷投融资平台【唯一官网】
# P2P概念板块_股票行情-手机金融界
这两行代码的作用是找到搜索条目中的标题并返回。
print('\n'.join([e.find_element_by_tag_name("a").get_attribute("href") for e in e_items]))
上面这行代码是找到相应的标题链接,我们可以发现,其实这些函数名都和 js 的函数名几乎相同,下面这行代码是点击网页最下方的下一页:
driver.find_element_by_xpath("//div[@id='page']/a/span[2]").click()
我们可以综合上述代码,实现整个爬取标题过程的自动化,实现代码如下:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
driver.get("https://www.baidu.com")
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "kw")))
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys("P2P")
driver.find_element_by_id("su").click()
for i in range(2,5,1):
time.sleep(1)
e_items = driver.find_elements_by_xpath("//*[@class='result c-container ']")
print("page ",i-1)
print("\n".join([e.find_element_by_tag_name("a").text for e in e_items]))
driver.find_element_by_xpath(f"//div[@id='page']/a/span[{i}]").click()
事实上,我们并不需要自己写这些代码的函数,我们可以直接在 Firefox 安装 Katalon 插件,点击运行,然后在浏览器上执行我们需要执行的操作即可导出代码。
下面是 Katalon 扩展程序页面,点击 Record,然后在 Firefox 像往常操作一样输入内容,检索内容,翻页:
执行内容时,Katalon 会弹出一些提示窗,说明已经执行了指令并转化为了代码:
执行完毕后点击 Stop(在刚刚点击 Record 的位置)即可,然后点击 Export,就可以发现我们可以导出任何形式我们需要的代码,甚至可以自己定制:
Selenium 详细介绍
其实也没啥好讲的,大家直接看文档吧哈哈哈哈哈哈:
https://selenium-python-zh.readthedocs.io/en/latest/getting-started.html#selenium
(最水的一篇文章出炉)