0315 Selenium详解

本文介绍了Selenium作为一个自动化测试工具如何帮助获取网页真正源代码,特别是对于隐藏内容的处理。讲解了遇到的问题,如无法获取上交所和新浪财经的股票实时数据。还提及了ChromeDriver在模拟浏览器中的作用,并提供了安装和基本使用方法,包括通过xpath和css_selector定位网页元素。最后,讨论了如何在后台运行Selenium以避免弹出浏览器窗口。
摘要由CSDN通过智能技术生成

1.难点 获取不了网页真正的源代码

Selenium是一个自动化测试工具,它能够驱动浏览器模拟人的操作,比如鼠标点击,键盘输入等操作。通过Selenium库我们能够相对比较容易地获取到网页的源代码,并且而且学完它之后,我们还可以进行之后会讲到的批量PDF下载等。

让人头疼的问题:获取不了网页真正的源代码。

比如 上交所公开信息及新浪财经 的股票实时数据,这个你用我们之前所用用的获取网页源码的方式会发现获取的内容很少,里面也没有自己想要的内容,它真正的源代码被隐藏了。

我们只需要通过selenium库就可以获取到网页真正的源码以及模拟人在浏览器上的操作。

2.网页模拟器

ChromeDriver,它的作用是给Pyhton提供一个模拟浏览器的方法,让Python能够自己运行浏览器,并用之后会讲的selenium进行鼠标及键盘操作。

安装chrome浏览器----安装ChromeDriver版本要匹配,并且配置环境 —安装 Selenium库

安装完成之后,我们来试着运行如下代码看看:

from selenium import webdriver
#声明我们用的模拟器是谷歌浏览器
browser = webdriver.Chrome()
#浏览器最大化
browser.maximize_window()
browser.get("https://www.baidu.com/")
#关闭浏览器
browser.quit()

这个xpath其实一个定位各个元素的手段,大家可以把xpath理解为这个元素的名字

结果就是 //*[@id=“kw”]

定位元素方法1:xpath法:

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')

如果搜索框里面本来就默认有,需要先清除 browser.find_element_by_xpath(’//*[@id=“kw”]’).clear()

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
browser.find_element_by_xpath('//*[@id="su"]').click()

定位元素方法2:css_selector法

只要把之前讲的Copy Xpath换成Copy selector即可复制css_selector

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_css_selector('#kw').send_keys('python')
browser.find_element_by_css_selector('#su').click()

完整的源码如下

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
browser.find_element_by_xpath('//*[@id="su"]').click()
#获取网页的源代码
data = browser.page_source
print(data)

比较难以获取的新浪财经股票信息

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
browser.find_element_by_xpath('//*[@id="su"]').click()
#获取网页的源代码
data = browser.page_source
print(data)

希望程序在后台运行,不要动不动就蹦一个模拟浏览器出来

from selenium import webdriver
browser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
browser.find_element_by_xpath('//*[@id="kw"]').send_keys('python')
browser.find_element_by_xpath('//*[@id="su"]').click()
#获取网页的源代码
data = browser.page_source
print(data)

希望程序在后台运行,不要动不动就蹦一个模拟浏览器出来 headless

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get("http://finance.sina.com.cn/realstock/company/sh000001/nc.shtml")
data = browser.page_source
print(data)

希望程序在后台运行,不要动不动就蹦一个模拟浏览器出来 headless

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值