Hanxinhu'Blog

Python + Selenium 爬虫入门

2020-01-28

Python + Selenium 爬虫入门

爬虫是什么

简单的理解就是获取网站上展示的信息的程序。

既然是获取网站上的信息,那么 html 的知识肯定避不开。html 菜鸟教程

为什么选择了 Python 和 Selenium

  1. 网上的爬虫教程几乎都是用 Python , 这意味着你踩到的坑,网上几乎都已经有人详细的写好了怎么从坑里爬出来。即使你遇到了一个前无古人的坑,也很容易找到大神帮你看一看瞧一瞧,多数情况,大神很容易就能看出问题,找到解决方案,少数情况,你能获得和大神一起 debug ,结对编程,提升编程能力的机会。
  2. 软件测试这门课中,学习过使用 Selenium ,可以通过 class_name, link_text, tag_name, xpath 等很方便的获取网页中的元素,并且进行鼠标键盘操作。相比于其他库(request, beatuifulsoup等) 更直观,也不需要写太多的正则表达式,学习成本更低一些。

如何开始

  1. 首先你要有 Python 环境,安装教程及 Python 基础可以看这里Python基础教程

  2. 个人更喜欢用 PyCharm来写代码,也可以用文本编辑器比如 vscode, nodepad++, atom等。 PyCharm 下载链接 。JETBRAINS 家的IDE专业版学生身份验证后都可以免费使用免费版大部分功能也够用了。

  3. 安装 Selenium pip install selenium 或者 pip3 install selenium

  4. 安装 webdriver

    各大浏览器 webdriver 地址可参见:webdriver下载

    推荐使用 Chrome 谷歌浏览器 Chrome WebDriver 下载

    webdriver需要和对应的浏览器版本以及selenium版本对应。

    Win: 复制webdriver到Python安装目录下

    Mac: 复制webdriver到/usr/local/bin目录下

基础操作

发现这部分已经有人整理好了,我也不赘述了。

链接如下 Python+Selenium基础入门及实践

我就写一下上面链接没有写到的部分

  1. 道理我都懂,但是我要怎么才能知道到目标元素的id, class_name, tag_name, xpath呢

百度 为例,首先打开谷歌浏览器,按照下图找到开发者工具

image-20200128113229818

点击左上角鼠标样式

image-20200128113946932

点一下目标元素,比如下图中的输入框,可以看到有图中的有一块颜色变深了,这表示

image-20200128114032461

1
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">

tag_name是input, class_name是s_ipt, autocompletemaxlength是元素的property等, id 是kw。 xpath 和 css_selector可以通过下图的方式获取,在目标元素代码处右键。xpath 是一个强有力的工具,具体细节可以看xpath 教程

image-20200128115230090

  1. 我需要的元素都已经加载完了,为什么我的程序还在等待。

    见文章 Selenium 的页面加载以及几种等待的问题

  2. 我需要爬的页面,调试时每次都要登陆验证怎么办。

    可以借鉴这篇文章,用谷歌的开发者模式反爬虫之利用chrome的debug模式破解不允许selenium模拟的网站 在命令行开的浏览器里登陆后,就自动保存了所有 cookie 不需要再次登陆了。 也可以通过手动加cookie的方式,由于看起来过于繁琐,我没有验证selenium 获取登录cookies,并添加cookies自动登录

  3. 我获取的元素在浏览器底部,无法通过 Selenium 点击怎么办

    1
    2
    js = "window.scrollTo(0,document.body.scrollHeight)"
    browser.execute_script(js)

    可以通过执行 js 命令的方法将浏览器滑倒底部。 或者通过 js 命令执行点击事件browser.execute_script("arguments[0].click();", element)

  4. 如何切换不同的 tab 标签页

    python selenium-webdriver 标签页切换(十五)

  5. 更多问题

    几乎都可以靠官方文档解决 Selenium 官方文档

    Selenium 中文版

Tags: 爬虫
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章