Python爬虫初级(十一)—— Selenium 详解

欢迎关注公众号K的笔记阅读博主更多优质学习内容
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执行内容时,Katalon 会弹出一些提示窗,说明已经执行了指令并转化为了代码:
Katalon 提示执行完毕后点击 Stop(在刚刚点击 Record 的位置)即可,然后点击 Export,就可以发现我们可以导出任何形式我们需要的代码,甚至可以自己定制:
导出代码

Selenium 详细介绍

其实也没啥好讲的,大家直接看文档吧哈哈哈哈哈哈:
https://selenium-python-zh.readthedocs.io/en/latest/getting-started.html#selenium
(最水的一篇文章出炉)

下一篇文章:Python爬虫初级(十二)—— 新闻消息抓取实战

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值