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