python实现selenium网络爬虫的方法小结
作者:不想打代码了 发布时间:2023-01-13 03:43:38
标签:python,selenium,网络爬虫
selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题,selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器,这里只用到谷歌浏览器。
1.selenium初始化
方法一:会打开网页
# 该方法会打开goole网页
from selenium import webdriver
url = '网址'
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window() # 实现窗口最大化
方法二:不会打开网页
# 该方法会隐式打开goole网页
from selenium import webdriver
url = '网址'
driver = webdriver.ChromeOptions()
driver.add_argument("headless")
driver = webdriver.Chrome(options=driver)
driver.get(url)
driver = webdriver.Chrome()出错是因为没有chromedriver.exe这个文件
2.元素定位
在selenium中,可以有多种方法对元素进行定位,个人通常喜欢用Xpath和selector来定位元素,这样就不用一个一个的去找节点,直接在网页上定位到元素复制就行。
driver.find_element_by_id() # 通过元素ID定位
driver.find_element_by_name() # 通过元素Name定位
driver.find_element_by_class_name() # 通过类名定位
driver.find_element_by_tag_name() # 通过元素TagName定位
driver.find_element_by_link_text() # 通过文本内容定位
driver.find_element_by_partial_link_text()
driver.find_element_by_xpath() # 通过Xpath语法定位
driver.find_element_by_css_selector() # 通过选择器定位
注:若寻找多个元素,要记得用复数来选择(element改为elements)
# 例如
[i.text for i in driver.find_elements_by_xpath()]
3.建立点击事件
因为有些网站的需求,需建立点击事件,
如下图的这种时间选择,需要设置点击和输入内容,设置的方法也很简单。
driver.find_element_by_css_selector('').click() # 点击
driver.find_element_by_css_selector('').send_keys('2021-3-9') # 输入内容
4.切换窗口
有些网站点击之后会产生新窗口,这时就需要进行窗口的切换才能进行元素定位
win = driver.window_handles # 获取当前浏览器的所有窗口
driver.switch_to.window(win[-1]) # 切换到最后打开的窗口
driver.close() # 关闭当前窗口
driver.switch_to.window(win[0]) # 切换到最初的窗口
5.iframe问题
有些网站会采用iframe来编写页面,这时就需要进入到iframe才可以获取元素,一般有多少个iframe就需要进入多少个iframe。
# 有两个iframe,需逐步进入
iframe1 = driver.find_element_by_xpath('')
driver.switch_to.frame(iframe1)
iframe2 = driver.find_element_by_xpath('')
driver.switch_to.frame(iframe2)
来源:https://blog.csdn.net/weixin_43334925/article/details/114579822


猜你喜欢
- 本文记录了mysql 8.0.22 安装配置图文教程,供大家参考,具体内容如下一、安装(1)、官网下载(2)、安装(前提是之前没安装过mys
- 简介Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Dja
- 距上篇关于淘宝抢购源码的文章已经过去五个月了,五个月来我通过不停的学习,掌握了更深层的抢购技术及原理,而上篇文章中我仅分享了关于加入购物车的
- tkinter是python的标准Tk GUI工具包的接口,在windows下如果你安装的python3,那在安装python的时候,就已经
- 页级:引擎 BDB。表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行行级:引擎 INNODB , 单独的一行记录加锁表级,
- SQL查询服务器下所有数据库及数据库的全部表获取所有用户名SELECT * FROM sys.sysusers获取所有用户数据库SELECT
- 目录1、前言2、详解1、前言使用中如果我们想把python可识别对象的dict类型的数据通过str类型写入文件或者存入变量中就需要用到dum
- 更多的信息,可以参考python内部的json文档: python>>> help(json) 或者官方文档: http:
- 使用mysql 中的load 命令,讲txt 文件中的内容加载到数据库表中,例如,创建table,名称是user,一个字段username;
- 本文实例讲述了Python实现的根据文件名查找数据文件功能。分享给大家供大家参考,具体如下:#-*- coding: UTF-8 -*-im
- 1、何为ansible-playbookplaybook是ansible用于配置,部署,和管理被控节点的剧本,通过playbook的详细描述
- 本文为大家分享了WebStorm安装教程,供大家参考一、简介WebStorm 是jetbrains公司旗下一款JavaScript 开发工具
- PYTHON首先要安装scapy模块PY3的安装scapy-python3,使用PIP安装就好了,注意,PY3无法使用pyinstaller
- 题:取表table中100条-200条之间数据 方法1:临时表 select top 200 * into #aa from table o
- 一、前言如果你自己打印过东西,应该有过这种经历。如果用自己拍的图片,在手机上看感觉还是清晰可见,但是一打印出来就是漆黑一片。比如下面这两张图
- 今日使用 npm init webpack love 创建一个新项目,然后执行 npm run dev 之后项目报错,提示错误如下:没有给这
- 简介pandas按条件筛选数据时,除了使用query()方法,还可以使用isin和对isin取反进行条件筛选.代码 import panda
- ASCII码转换为int:ord('A') 65int转为ASCII码:chr(65) 'A'题目内容:实现
- 由于项目是thinkPHP做后端框架,一直以来都是多页面的后端路由,想使用火热的webpack有点无从下手(原谅我太菜,而且推广vue只有我
- uni-app自定义导航栏右侧做增加按钮并跳转链接uni-app 在页面上的导航栏右侧做一个增加的图标 并实现跳转1. 先看效果图2. 实现