起因:
想爬取一个网站上的数据,但是这个网址不是一般的html,而是shtml,至于这两者的区别,大家可以自行百度,简单的说就是html一般都是静态网页,而shtml一般是动态网页,也就是我们在抓取的时候,不能真正得到网页上的数据,要想拿到数据,就要想别的办法,说这么多可能有点懵逼,简单例子如下:
当我们点击网页检查的时候如下所示,
可以看到很多数据都在网页上,但是当我们把这个网址作为目标网页的时候,你会发现你并不能取到数据,原因是什么呢?再当我们点击显示网页源代码的时候,会出现另外一个页面,如下所示:
我们发现一个很大的问题就是我们的数据在源代码里没有里,这也就是为什么我们明明看到数据在网页里,但是不能取到的原因,后来又发现网址的结尾是.shtml。这就更证明里源码里是不可能有数据的,因为是动态加载网页,所以为能获取数据,我们使用了一个工具就是selenium的工具,会真实打开浏览器爬取代码,效率低一些。
下面介绍一下Mac系统下 使用vs code软件来使用selenium。
1,安装selenium
Visual studio code控制台中直接输入:
python -m pip install selenium
如下图所示:
安装速度很快。
2,查看是否安装selenium成功
Visual studio code中直接输入:
pip show selenium
如下图所示;
3,
安装ChromeDriver、Firefox Geckodriver(我使用的chrome,所以以chrome为例)
https://sites.google.com/a/chromium.org/chromedriver/downloads
根据自己的浏览器版本和系统不同选择自己的下载驱动
4,上述工作搞定后,我们还需要假如路径。
1.打开终端
2.输入#cd /usr/bin
3.输入open . (有点)
4.然后把下载解压好的chromedriver拖到打开的文件里面
5.输入chromedriver --version检查一下
如下图所示:
5,加入环境变量 (如上图所示)
打开终端,输入: cd ~ 回车,会进入~文件夹
然后输入:touch .bash_profile,回车执行后,
再输入:open -e .bash_profile 回车
会在TextEdit中打开这个文件(如果以前没有配置过环境变量,那么这应该是一个空白文档)。如果有内容,直接保存即可,如果没有内容,请直接输入如下语句:
export PATH=$PATH:/usr/local/bin/ChromeDriver
然后保存文件。
6,检测是否安装成功。
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
br = webdriver.Chrome()
br.get("https://www.baidu.com")
frist = br.find_element_by_link_text("设置")
ActionChains(br).move_to_element(frist).perform()
menu = br.find_element_by_link_text("搜索设置")
menu.click()
会自动打开百度的设置页,那么就表明安装成功了。