python实现selenium网络爬虫的方法小结

作者:不想打代码了 时间:2023-01-13 03:43:38 

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()]

python实现selenium网络爬虫的方法小结

3.建立点击事件

因为有些网站的需求,需建立点击事件,
如下图的这种时间选择,需要设置点击和输入内容,设置的方法也很简单。

python实现selenium网络爬虫的方法小结


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。

python实现selenium网络爬虫的方法小结


# 有两个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

标签:python,selenium,网络爬虫
0
投稿

猜你喜欢

  • Python将list中的string批量转化成int/float的方法

    2021-12-11 00:11:59
  • Python正则表达式中的量词符号与组问题小结

    2022-12-14 15:24:24
  • CSS应用的必要步骤:样式重设

    2008-06-11 13:29:00
  • Mysql带And关键字的多条件查询语句

    2024-01-14 08:41:17
  • 浅谈python数据类型及类型转换

    2023-08-28 15:25:32
  • Python中输出ASCII大文字、艺术字、字符字小技巧

    2021-03-03 00:06:49
  • Python编程使用matplotlib挑钻石seaborn画图入门教程

    2021-04-12 18:28:17
  • Python实现yaml与json文件批量互转

    2023-11-20 07:07:54
  • 浅谈Scrapy网络爬虫框架的工作原理和数据采集

    2023-08-24 22:17:21
  • python的dataframe转换为多维矩阵的方法

    2021-08-19 08:59:09
  • Python中的集合介绍

    2022-09-10 03:49:52
  • WebStorm 遇到的问题总结

    2023-08-31 23:30:00
  • python中opencv实现图片文本倾斜校正

    2023-08-27 11:07:03
  • python3.5 + PyQt5 +Eric6 实现的一个计算器代码

    2021-02-27 17:00:28
  • OpenCV+Imutils实现图像的旋转操作

    2021-07-25 20:39:42
  • Python 常用模块 re 使用方法详解

    2021-02-23 13:10:19
  • executesql 存储过程

    2024-01-21 17:04:21
  • 纯CSS圆角框

    2009-12-11 18:57:00
  • 如何用OpenCV -python3实现视频物体追踪

    2022-04-02 23:15:58
  • 在pytorch 中计算精度、回归率、F1 score等指标的实例

    2022-08-10 06:28:18
  • asp之家 网络编程 m.aspxhome.com