32-用selenium模块控制浏览器
12.8 用selenium模块控制浏览器
selenium
模块可让Python直接控制浏览器,实现方法是单击链接并填写登录信息,几乎就像人类用户与页面交互一样。与 requests
和 bs4
相比, selenium
允许你用高级得多的方式与网页交互。但因为它启动了Web浏览器,假如你只是想从网络上下载一些文件,会有点慢,并且难以在后台运行。
尽管如此,如果你与网页交互的方式依赖于更新网页的 JavaScript
代码,那么你就需要使用 selenium
而不是 requests
。这是因为像亚马逊这样的大型电商网站肯定会有软件系统来识别他们怀疑是脚本的流量,这些脚本可能会获取他们的信息或注册多个免费账户。这些网站可能会在一段时间后拒绝向你提供页面,让你编写的所有脚本失效。与 requests
相比, selenium
模块在这些网站上长期有效的可能性要大得多。
向网站“透露”你正在使用脚本的一种主要方式是 user-agent
字符串,它标识了Web浏览器,并包含在所有的HTTP请求中。例如, requests
模块的 user-agent
字符串是类似 'python-requests/2.21.0'
这样的东西。你可以访问一个网站查看你的 user-agent
字符串。使用 selenium
,你更有可能“作为人类允许通过”,因为 selenium
的 user-agent
不仅和普通浏览器一样(例如, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0')
,而且它的流量模式也是一样的:一个由 selenium
控制的浏览器会像普通浏览器一样下载图片、广告、cookie和隐私入侵追踪器。不过, selenium
仍然可以被网站检测到,各大票务和电子商务网站通常会屏蔽由 selenium
控制的浏览器,以防止网页被抓取。