本项目将使用requests
库、BeaurifulSoup
库、selenium
库实现下载百度图片的功能.
1、前言
首先,为什么要使用selenium
库呢?因为在我们编写爬虫代码的过程中,可能会遇到一个问题:我们需要爬取的内容虽然打开浏览器开发者工具可以看到对应的HTML代码,但是打开网页源代码却找不到对应的内容,而且使用requests库get到的HTML代码也不包含那部分内容.造成这种问题的原因是:你想要爬取的内容采取了js动态加载的方式,属于动态网页.
所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着html代码生成,页面的内容和显示效果就不会发生变化了。而动态网页则不然,其显示的页面则是经过Javascript处理数据后生成的结果,可以发生改变。这些数据的来源有多种,可能是经过Javascript计算生成的,也可能是通过Ajax加载的。
从下面两张图中可以看到区别
那么,从以上的描述我们就知道,使用selenium
库的目的就是解决requests
库无法加载动态网页的问题.那么selenium
库是什么?
2、selenium库
Selenium最初是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Firefox,Safari,Google Chrome,Opera等。但是后来,随着动态网页技术的出现,我们用传统方法爬取动态网页遇到了很多困难,这时候就有人开始把selenium
库用于爬取动态网页,虽然速度变慢了,但是爬取的结果相当不错.
2.1 安装selenium库
pip install selenium
2.2 下载浏览器驱动
由于我最常使用的是Chrome浏览器,所以我以Chrome浏览器为例.
首先,在Chrome地址栏输入地址
chrome://version
从图中我们可以看到最上面一行Google Chrome:77.0.3865.90
,Chrome对应版本为77.
然后再从http://npm.taobao.org/mirrors/chromedriver/网站找到对应版本的Chromedriver.
2.3 使用selenium
# 从selenium导入webdriver
from selenium import webdriver
from bs4 import BeautifulSoup