当前位置:   article > 正文

python实现selenium网络爬虫_python selenium爬虫

python selenium爬虫


selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题,selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器,这里只用到谷歌浏览器。

1.selenium初始化

方法一:会打开网页

# 该方法会打开goole网页
from selenium import webdriver
url = '网址'
driver = webdriver.Chrome()
driver.get(url)
driver.maximize_window()  # 实现窗口最大化
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

方法二:不会打开网页

# 该方法会隐式打开goole网页
from selenium import webdriver
url = '网址'
driver = webdriver.ChromeOptions()
driver.add_argument("headless")
driver = webdriver.Chrome(options=driver)
driver.get(url)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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()  # 通过选择器定位
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注:若寻找多个元素,要记得用复数来选择(element改为elements)

# 例如
[i.text for i in driver.find_elements_by_xpath()]
  • 1
  • 2

3.建立点击事件

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

# 具体顺序依照实际情况
driver.find_element_by_css_selector('').clear()  # 清空文本框内容
driver.find_element_by_css_selector('').click()  # 点击
driver.find_element_by_css_selector('').send_keys('2021-3-9')  # 输入内容
  • 1
  • 2
  • 3
  • 4

4.切换窗口

有些网站点击之后会产生新窗口,这时就需要进行窗口的切换才能进行元素定位

win = driver.window_handles # 获取当前浏览器的所有窗口
driver.switch_to.window(win[-1])  # 切换到最后打开的窗口
driver.close()  # 关闭当前窗口
driver.switch_to.window(win[0])    # 切换到最初的窗口
  • 1
  • 2
  • 3
  • 4

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)
  • 1
  • 2
  • 3
  • 4
  • 5

以上所述均为个人所需的总结
较具体的可以参考:https://www.cnblogs.com/WiseAdministrator/articles/11316809.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/695232
推荐阅读
相关标签
  

闽ICP备14008679号