Python爬虫基础(三):使用Selenium动态加载网页

   日期:2024-12-26    作者:prqm9v 移动:http://mip.riyuangf.com/mobile/quote/38048.html

Python爬虫基础(三):使用Selenium动态加载网页

Python爬虫基础(一:urllib库的使用详解
Python爬虫基础(二:使用xpath与jsonpath解析爬取的数据
Python爬虫基础(三:使用Selenium动态加载网页
Python爬虫基础(四:使用更方便的requests库
Python爬虫基础(五:使用scrapy框架

(1)Selenium是一个用于Web应用程序测试的工具。
(2)Selenium 测试直接运行在浏览器中,就像真正的用户在操作一样。
(3)支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaDriver,ChromeDriver)驱动真实浏览器完成测试。
(4)selenium也是支持无界面浏览器操作的。

 

爬取的网页,我们全局搜索发现,并没有秒杀这部分内容。

因为秒杀这部分内容,是在js中动态加载的,而selenium就可以。

(1)谷歌浏览器驱动下载安装

查看谷歌浏览器的版本:帮助->关于google chrome,查看版本。

如果是最新版的谷歌浏览器,以上可能没有同步更新,试试下面的网站

将解压出来的exe文件,放到python项目的根目录下(为了方便使用,不这样做的话,使用时指定路径也可)。

(2)安装selenium

 
 
 

简单三步,轻松使用,获取网页的全部内容(网页完全加载完毕之后的)。

 
 

元素定位:自动化要做的就是模拟鼠标和键盘来操作来操作这些元素,点击、输入等等。操作这些元素前首先要找到它们,WebDriver提供很多定位元素的方法。

 
 
 
 
 
 
 
 

(1)是一个无界面的浏览器
(2)支持页面元素查找,js的执行等
(3)由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多

(1)获取PhantomJS.exe文件路径path
(2)browser = webdriver.PhantomJS(path)
(3)browser.get(url)
扩展:保存屏幕快照:browser.save_screenshot(‘baidu.png’)

 
 
 

Chrome-headless 模式, Google 针对 Chrome 浏览器 59版 新增加的一种模式,可以让你不打开UI界面的情况下使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致,性能更高。

系统要求
Chrome:UnixLinux 系统需要 chrome >= 59、Windows 系统需要 chrome >= 60
Python3.6 +
Selenium3.4.* +
ChromeDriver
2.31 +

 
 
 

(1)打开有界浏览器

 

(2)打开无界浏览器,截图

 

(3)访问页面

进行页面访问使用的是 方法,传入参数为待访问页面的 URL 地址即可。

 

(4)设置浏览器大小

方法可以用来设置浏览器大小(就是分辨率,而 则是设置浏览器为全屏

 

(5)刷新页面

 

(6)前进后退

 

(7)获取页面基础属性

如果有需要,这里的页面源码我们就可以用 正则表达式 、 Bs4 、 xpath 以及 pyquery 等工具进行解析提取想要的信息了。

 
 

(1)id定位

 

(2)name定位

 

(3)class定位

 

(4)tag定位

我们知道 HTML 是通过 tag 来定义功能的,比如 input 是输入, table 是表格等等。每个元素其实就是一个 tag ,一个 tag 往往用来定义一类功能,我们查看百度首页的 html 代码,可以看到有很多同类 tag ,所以其实很难通过 tag 去区分不同的元素。

 

(5)link定位

这种方法顾名思义就是用来定位文本链接的,比如百度首页上方的分类模块链接。

 

(6)partial定位

有时候一个超链接的文本很长,我们如果全部输入,既麻烦,又显得代码很不美观,这时候我们就可以只截取一部分字符串,用这种方法模糊匹配了。

 

(7)xpath定位

 

(8)css定位

 

(9)多元素处理


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号