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
0
投稿
猜你喜欢
- 准备工作首先是准备工作,导入需要使用的库,读取并创建数据表取名为loandata。import numpy as npimport pand
- 前言;Python基础知识+结构+数据类型Python基础学习列表+元组+字典+集合Python基础学习函数+模块+类今天给大家分享的是第四
- 前言最近工作中遇到了一些需求,想通过图形化的方式显示社交网络特定用户的好友关系,上网找了一下这方面的图形库有networkx、graphvi
- 在《多进程并发与同步》中介绍了进程创建与信息共享,除此之外python还提供了更方便的进程间通讯方式。进程间通讯multiprocessin
- 阅读上一篇:FrontPage XP设计教程5——表单的设计 在制作出图文并茂的网页之后,很多读者朋友还想让自己的网页能够播放音乐、视频等多
- 一、简介我们知道在购买股票的时候,可以使用历史数据来对当前的股票的走势进行预测,这就需要对股票的数据进行获取并且进行一定的分析,当然了,人们
- PyHook是一个基于Python的“钩子”库,主要用于监听当前电脑上鼠标和键盘的事件。这个库依赖于另一个Python库PyWin32,如同
- 使用python实现双向链表,供大家参考,具体内容如下双向链表: 指的是讲数据链接在一起,每个数据是一个节点,每一个节点都有一个数据区,两个
- 大家一定使用过 phpmyadmin 里面的数据库导入,导出功能,非常方便。但是在实际应用中,我发现如下几个问题: 1、数据库超过一定尺寸,
- 技术背景GPU的加速技术在深度学习、量子计算领域都已经被广泛的应用。其适用的计算模型是小内存的密集型计算场景,如果计算的模型内存较大,则需要
- 在python中进行两个整数相除的时候,在默认情况下都是只能够得到整数的值解决方法:1. 修改被除数的值为带小数点的形式即可得到浮点值2.在
- 首先忠心感谢凌宇5942给我的帮助!在他的启迪下我发现了另一种实现flash透明背景的办法,愿与大家共同探讨:凌宇5942告知的解决办法:在
- Python最基本的数据结构是序列(列表/元组)。一个序列中的每个元素都分配有一个数字- 它的位置或索引。第一个索引是0,第二个
- 本文实例讲述了Python pymongo模块用法。分享给大家供大家参考,具体如下:MongoDB优点 MongoDB是一个为当代web应用
- 只有mdf文件的数据库附加失败的修复 附加时报如下错误: 服务器: 消息 1813,级别 16,状态 2,行 1 未能打开新数据库 '
- 目录1.横向合并1.1 concatenate方法1.2 hstack方法1.3 column_stack方法2.纵向合并2.1 conca
- virtualenv介绍virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题。virtualenv把
- 反射在Python中,能够通过一个对象,找出type、class、attribute或者method的能力,成为反射。函数与方法内建函数:g
- 回想下,在 Python 中编程时,你是否曾经需要检查某个可迭代对象(如列表)中的任何元素或所有元素的计算结果是否为True?假设,我们要判
- K线数据提取依据原有数据集格式,按要求生成新表:1、每分钟的close数据的第一条、最后一条、最大值及最小值,2、每分钟vol数据的增长量(