不用担心反爬虫,不用纠结动态加载,这套组合拳让爬虫变得简单有趣
第一章:爬虫利器登场——Selenium与PhantomJS是何方神圣?
先来说说我们的两位"爬虫大将":Selenium和PhantomJS。
Selenium,原本是个Web自动化测试工具,就像个网页界的机器人,可以模拟人类在浏览器上的各种操作:点击按钮、输入文字、翻页等等。后来人们发现,哎,这玩意儿用来爬虫也不错啊!特别是对于那些需要交互才能看到内容的网站,简直绝了。
PhantomJS,是一个"无头"浏览器,说白了就是没有界面的浏览器。你想想,平时你开浏览器,能看到窗口、标签页、地址栏,但PhantomJS所有这些都没有,它只在后台默默运行。这样好处可大了:占用资源少,运行速度快,而且不会突然弹出个窗口吓你一跳。
这两位结合起来,简直就是爬虫界的黄金搭档。一个负责模拟点击操作,一个负责无声无息地执行,配合得天衣无缝。
不过这里得插一嘴:PhantomJS已经被官方放弃了,现在更推荐使用Chrome或Firefox的无头模式。但学会PhantomJS再使用其他浏览器已是轻车熟路了。我们今天还是以PhantomJS为例,因为它的配置相对简单,适合初学者。
第二章:环境准备——装好装备再上战场
在开始写代码之前,得先把环境搭建好。就像你要做饭,得先备好锅碗瓢盆一样。
首先安装必要的Python库:
pip install selenium
pip install BeautifulSoup4
pip install lxml
接着去PhantomJS官网(http://phantomjs.org/download.html)下载对应系统的版本,下载后解压,把可执行文件放到系统路径中。
或者,你也可以直接把phantomjs.exe放在你的Python脚本同目录下。
有同学要问了,为什么不用Chrome的无头模式?嗯,好问题!其实也可以,但PhantomJS配置起来更简单,不需要安装浏览器和驱动,对新手更友好。
第三章:网页分析——像侦探一样观察目标
任何爬虫开始前,都得先分析目标网站。今天我们用腾讯动漫的《幽游白书》为例(http://ac.qq.com/ComicView/index/id/543606/cid/1)。
打开这个页面,发现漫画并没有全部加载,需要向下翻页才可以加载完毕。这就是典型的动态加载网页,传统爬虫对这种网页无能为力,但我们的Selenium+PhantomJS组合却能轻松应对。
按F12打开开发者工具,仔细查看图片的加载方式。可以发现,所有的漫画图片都在img标签中,通过检查网络请求,可以找到图片的真实地址。
接下来,我们用BeautifulSoup来提取出所有img地址,然后通过Python将其保存成图片。
第四章:代码实战——一步一步教你写爬虫
说了这么多,终于到了最激动人心的编码环节了!直接上代码,我会逐行解释,保证你都能看懂。
基础爬虫框架
import selenium.webdriver
from bs4 import BeautifulSoup
import time
import os
import requests
class ComicSpider:
def __init__(self):
self.driver = selenium.webdriver.PhantomJS()
# 如果PhantomJS不在系统路径,需要指定路径
# self.driver = webdriver.PhantomJS(executable_path='./phantomjs'))
def get_comic(self, url):
# 访问网页
self.driver.get(url)
# 等待页面加载
time.sleep(2)
# 模拟滚动页面以确保所有内容加载
self.driver.execu
Selenium漫画爬虫实战

最低0.47元/天 解锁文章
1852

被折叠的 条评论
为什么被折叠?



