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