网页抓取数据百度百科(selenium(待更新实验部分)本文介绍库和chrome浏览器)
优采云 发布时间: 2022-02-11 22:17网页抓取数据百度百科(selenium(待更新实验部分)本文介绍库和chrome浏览器)
概括
最后更新时间:2020.08.20(实验部分待更新)
本文类型:实际应用类(非知识讲解)
本文介绍selenium库和chrome浏览器自动抓取网页元素,定位填写表单数据,可以自动填写,节省大量人力。为了方便selenium库的使用,也方便操作中的错误处理,本文在一定程度上对selenium库进行了重新封装,方便读者在了解selenium库后快速上手编程。
一、本文知识点:1.安装selenium库,2.selenium库如何查找元素,3.selenium库的重新打包
二、本文结构:1.先简单介绍一下知识点,2.以完整版块的形式贴出复制后可以直接运行的调试代码,方便读者调试发布的每段代码
三、本文方法实现:以百度首页为控制网页,以谷歌浏览器为实验平台,使用python+selenium操作网页。ps:其他对应的爬网实验会更新。
四、本文实验:1.A股市场数据后台截图(2020.09.09已更新),2.后台QQ邮箱读取最新邮件(待更新),等待其他实验更新(均提供详细代码和注释,文末有对应链接)
温馨提示:以下为本文正文内容文章,以下案例供参考
文章目录
二、Selenium 快速入门
三、我的简单包装器
四、实验
一、安装selenium库及相关文件
Selenium 库是 python 用于爬虫网站 的自动化工具。支持的浏览器包括Chrome、Firefox、Safari等主流界面浏览器,以及Windows、Linux、IOS、Android等各种操作系统。
1.安装 selenium 库
(1)点击win10的开始菜单,直接输入cmd,右键以管理员身份运行
(2)如果安装python时勾选了添加路径选项,可以直接输入命令
点安装硒
(如果没有添加,建议卸载python,重新安装并检查添加路径。慎重选择这个建议,因为需要重新安装之前下载的库)
(3)网络连接下等待完成,如果提示超时,可以尝试以下命令切换下载源重新安装:pip install selenium -i
2.下载谷歌浏览器相关文件
本文使用的浏览器是谷歌浏览器,所以只介绍谷歌浏览器的爬虫方法,其他浏览器的方法类似。
(1)点击下载谷歌浏览器
(2)安装谷歌浏览器后,查看谷歌浏览器的版本号。点击谷歌浏览器右上角的三个点,选择-帮助-关于谷歌浏览器-查看版本号。
如图,本文版本号为84.0.4147.125
(3)点击下载谷歌浏览器驱动
打开驱动下载页面,找到版本号对应的驱动版本。在本文中,84.0.4147.125,所以如图所示寻找84.0开头的驱动。,点击打开,下载对应系统的驱动。然后将其解压缩到您要编写项目的文件夹中。
不要放在python目录或浏览器安装目录下。如果这样做,当您将其移植到另一台计算机时,将会出现各种错误。根本原因是您的计算机安装了相应的库文件和驱动程序。电脑可能没有安装。
二、Selenium 快速入门1.定位元素的八种方法
(1) 标识
(2) 名称
(3) xpath
(4) 链接文本
(5) 部分链接文本
(6) 标签名
(7) 类名
(8) CSS 选择器
2. id 方法
(1) 在 selenium 中通过 id 定位元素:find_element_by_id
以百度的页面为例,其百度输入框部分源码如下:
1
2
3
4
5
6
7
10
11
其中,是输入框的网页代码,元素通过id查找元素的代码和注释如下:
1import os
2import sys
3import time
4from selenium import webdriver
5##此方法获取的工作文件夹路径在py文件下或封装exe后运行都有效##
6当前工作主路径 = os.path.dirname(os.path.realpath(sys.argv[0]))
7##配置谷歌浏览器驱动路径##
8谷歌驱动器驱动 = 当前工作主路径+"/"+"chromedriver.exe"
9##初始化selenium控件##
10浏览器驱动 = webdriver.Chrome(executable_path=谷歌驱动器驱动)
11##打开链接,更换其他网址,请注意开头要带上http://##
12浏览器驱动.get("http://www.baidu.com")
13##通过id搜索清除搜索框内容##
14浏览器驱动.find_element_by_id("kw").clear()
15##通过id搜索输入搜索框内容##
16浏览器驱动.find_element_by_id("kw").send_keys("python+selenium库 实现爬虫抓取网页数据内容并自动填表的解决方法并附已交付甲方实际稳定运行的代码")
17##通过id搜索点击百度一下进行搜索##
18浏览器驱动.find_element_by_id("su").click()
19##保持5s时间
20time.sleep(5)
21###关闭退出浏览器
22浏览器驱动.quit()
23
24
3. 命名方法
还是以百度输入框为例,在selenium中按名称定位一个元素:find_element_by_name
代码和注释如下:
1import os
2import sys
3import time
4from selenium import webdriver
5##此方法获取的工作文件夹路径在py文件下或封装exe后运行都有效##
6当前工作主路径 = os.path.dirname(os.path.realpath(sys.argv[0]))
7##配置谷歌浏览器驱动路径##
8谷歌驱动器驱动 = 当前工作主路径+"/"+"chromedriver.exe"
9##初始化selenium控件##
10浏览器驱动 = webdriver.Chrome(executable_path=谷歌驱动器驱动)
11##打开链接,更换其他网址,请注意开头要带上http://##
12浏览器驱动.get("http://www.baidu.com")
13##通过name搜索清除搜索框内容##
14浏览器驱动.find_element_by_name("wd").clear()
15##通过name搜索输入搜索框内容##
16浏览器驱动.find_element_by_name("wd").send_keys("python+selenium库 实现爬虫抓取网页数据内容并自动填表的解决方法并附已交付甲方实际稳定运行的代码")
17##通过id搜索点击百度一下进行搜索##
18浏览器驱动.find_element_by_id("su").click()
19##保持5s时间
20time.sleep(5)
21###关闭退出浏览器
22浏览器驱动.quit()
23
24
4. xpath 方法
还是以百度输入框为例,在selenium中通过xpath定位一个元素:find_element_by_xpath。但是这种方法不适用于网页中位置会发生变化的表格元素,因为xpath方法指向的是固定的行和列,无法检测到行和列内容的变化。
首先,在谷歌浏览器中打开百度,在空白处右击,选择勾选(N),进入网页的开发者模式,如图。然后右击百度输入框,再次点击勾选(N),可以发现右边自动选中的部分代码框变成了百度输入框的代码。最后在右边自动选中的代码段右键-选择复制-选择复制Xpath,百度输入框的xpath是//*[@id="kw"],百度那个的xpath是/ /*[@id="su"]
接下来,使用该值进行百度搜索。代码和注释如下。
1import os
2import sys
3import time
4from selenium import webdriver
5##此方法获取的工作文件夹路径在py文件下或封装exe后运行都有效##
6当前工作主路径 = os.path.dirname(os.path.realpath(sys.argv[0]))
7##配置谷歌浏览器驱动路径##
8谷歌驱动器驱动 = 当前工作主路径+"/"+"chromedriver.exe"
9##初始化selenium控件##
10浏览器驱动 = webdriver.Chrome(executable_path=谷歌驱动器驱动)
11##打开链接,更换其他网址,请注意开头要带上http://##
12浏览器驱动.get("http://www.baidu.com")
13##通过xpath搜索清除搜索框内容,注意单引号与双引号的混合使用##
14浏览器驱动.find_element_by_xpath('//*[@id="kw"]').clear()
15##通过xpath搜索输入搜索框内容,注意单引号与双引号的混合使用##
16浏览器驱动.find_element_by_xpath('//*[@id="kw"]').send_keys("python+selenium库 实现爬虫抓取网页数据内容并自动填表的解决方法并附已交付甲方实际稳定运行的代码")
17##通过xpath搜索点击百度一下进行搜索,注意单引号与双引号的混合使用##
18浏览器驱动.find_element_by_xpath('//*[@id="su"]').click()
19##保持5s时间
20time.sleep(5)
21###关闭退出浏览器
22浏览器驱动.quit()
23
24
5. 链接文本和部分链接文本方法