Python + Selenium 爬虫入门
爬虫是什么
简单的理解就是获取网站上展示的信息的程序。
既然是获取网站上的信息,那么 html 的知识肯定避不开。html 菜鸟教程
为什么选择了 Python 和 Selenium
- 网上的爬虫教程几乎都是用 Python , 这意味着你踩到的坑,网上几乎都已经有人详细的写好了怎么从坑里爬出来。即使你遇到了一个前无古人的坑,也很容易找到大神帮你看一看瞧一瞧,多数情况,大神很容易就能看出问题,找到解决方案,少数情况,你能获得和大神一起 debug ,结对编程,提升编程能力的机会。
- 在软件测试这门课中,学习过使用 Selenium ,可以通过 class_name, link_text, tag_name, xpath 等很方便的获取网页中的元素,并且进行鼠标键盘操作。相比于其他库(request, beatuifulsoup等) 更直观,也不需要写太多的正则表达式,学习成本更低一些。
如何开始
首先你要有 Python 环境,安装教程及 Python 基础可以看这里Python基础教程
个人更喜欢用 PyCharm来写代码,也可以用文本编辑器比如 vscode, nodepad++, atom等。 PyCharm 下载链接 。JETBRAINS 家的IDE专业版学生身份验证后都可以免费使用免费版大部分功能也够用了。
安装 Selenium
pip install selenium
或者pip3 install selenium
安装 webdriver
各大浏览器 webdriver 地址可参见:webdriver下载
推荐使用 Chrome 谷歌浏览器 Chrome WebDriver 下载
webdriver需要和对应的浏览器版本以及selenium版本对应。
Win:
复制webdriver到Python安装目录下
Mac:
复制webdriver到/usr/local/bin目录下
基础操作
发现这部分已经有人整理好了,我也不赘述了。
我就写一下上面链接没有写到的部分
- 道理我都懂,但是我要怎么才能知道到目标元素的id, class_name, tag_name, xpath呢
以 百度 为例,首先打开谷歌浏览器,按照下图找到开发者工具
点击左上角鼠标样式
点一下目标元素,比如下图中的输入框,可以看到有图中的有一块颜色变深了,这表示
1 | <input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off"> |
tag_name是input
, class_name是s_ipt
, autocomplete
和maxlength
是元素的property等, id 是kw
。 xpath 和 css_selector可以通过下图的方式获取,在目标元素代码处右键。xpath 是一个强有力的工具,具体细节可以看xpath 教程
我需要的元素都已经加载完了,为什么我的程序还在等待。
我需要爬的页面,调试时每次都要登陆验证怎么办。
可以借鉴这篇文章,用谷歌的开发者模式反爬虫之利用chrome的debug模式破解不允许selenium模拟的网站 在命令行开的浏览器里登陆后,就自动保存了所有 cookie 不需要再次登陆了。 也可以通过手动加cookie的方式,由于看起来过于繁琐,我没有验证selenium 获取登录cookies,并添加cookies自动登录
我获取的元素在浏览器底部,无法通过 Selenium 点击怎么办
1
2js = "window.scrollTo(0,document.body.scrollHeight)"
browser.execute_script(js)可以通过执行 js 命令的方法将浏览器滑倒底部。 或者通过 js 命令执行点击事件
browser.execute_script("arguments[0].click();", element)
如何切换不同的 tab 标签页
更多问题
几乎都可以靠官方文档解决 Selenium 官方文档
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏
扫描二维码,分享此文章