美文网首页python爬虫入门看这个就够了我爱编程
Python 爬虫(Selenium 爬取糗事百科)

Python 爬虫(Selenium 爬取糗事百科)

作者: 哎呀我Qu | 来源:发表于2017-10-11 10:46 被阅读54次

上一篇介绍了通过正则匹配完成的简单爬虫,这次要介绍一个自动化测试工具 -- Selenium,应用 Selenium 可以非常轻松的完成一个爬虫程序。下面我们就通过 Selenium 来爬取一下 “糗事百科” 中的段子。

一、Selenium 的安装与使用

1、安装很简单,只需要一句命令
pip install selenium

过程中可能会出现 “Read timed out.” 的错误,这时需要添加一个 timeout 参数,像这样

 pip install selenium --timeout 6000

或者通过豆瓣提供的国内 pipy 镜像服务来安装

pip install selenium -i http://pypi.douban.com/simple

pip 是一个包管理工具,安装方法自行百度一下,非常简单

2、使用

我们一般通过 Chrome 浏览器来调试,使用 Selenium 之前需要先下载对应的驱动。传送门,需要科学上网。

下载完成后解压,放在 /usr/local/bin 目录下,Windows 用户自行百度一下配置方法。

sudo mv /Users/JackieQu/Downloads/chromedriver /usr/local/bin

然后运行下面的代码,若自动打开了浏览器并访问了简书主页,则说明配置成功。

from selenium import webdriver
 
dr = webdriver.Chrome()
dr.get('http://www.jianshu.com/')

Selenium 像 jQuery 一样,可以通过 id、class、name 等直接获取网页元素,原理应该跟正则匹配差不多(我也是猜的,毕竟没看过源码)。常用的几个方法如下:

find_element_by_id
find_element_by_class_name
find_element_by_name
find_element_by_xpath

多个元素获取则改为 elements,如:

find_elements_by_class_name

其中 by_id、by_class_name 对于一些结构比较简单网页比较适用,而对于有些网站,如 36kr、腾讯新闻等,就不太奏效了。这就要通过 xpath 来获取元素,关于 by_xpath 下篇再说。

二、分析网页代码

我们进入糗事百科,打开调试模式,可以很容易的看的该网页的代码结构。

下图即为要爬取内容的外层 <div id="content-left" class="col1">

content-left

再用鼠标选中段子内容,可以发现文章的外层 <div class="content">


content

所以我们只需要获取到 id="content-left" 的元素,再对其内部 class="content" 的元素进行遍历即可获得我们想要的段子。

三、代码与演示

# !/usr/bin/env python
# coding:utf-8

from selenium import webdriver

class Qiubai:
    def __init__(self):
        self.dr = webdriver.Chrome()
        self.dr.get('https://www.qiushibaike.com/')

    def getData(self):
        content_left = self.dr.find_element_by_id('content-left')
        contents = content_left.find_elements_by_class_name('content')

        i = 1
        for content in contents:
            print(str(i) + "." + content.text + '\n')
            i += 1

        self.quit()

    def quit(self):
        self.dr.quit()

Qiubai().getData()
演示

哦了,至此爬虫完成。
要想爬取更多页的段子,自己翻页看看 url 后面拼的参数,遍历一下即可。

相关文章

网友评论

    本文标题:Python 爬虫(Selenium 爬取糗事百科)

    本文链接:https://www.haomeiwen.com/subject/tshbyxtx.html