[Python爬虫]使用Python爬取动态网页-腾讯动漫(Selenium)
作者:宅必备
一个会写Python的Oracle DBA
个人公众号:宅必备
前文传送门:
[Python爬虫]使用Python爬取动态网页-豆瓣电影(JSON)
好久没更新Python相关的内容了,这个专题主要说的是Python在爬虫方面的应用,包括爬取和处理部分
上节我们说了如何获取动态网页中的jquery内容
这节说如何利用selenium模拟浏览器动作
开发环境
操作系统:windows 10
Python版本 :3.6
爬取网页模块:selenium,PhantomJS
分析网页模块:BeautifulSoup4
关于Selenium
selenium 是一个Web自动测试的工具,可以用来操作一些浏览器Driver,例如Chrome,Firefox等,也可以使用一些headless的driver,例如PhantomJS
具体请参加官网:
http://selenium-python.readthedocs.io/
关于PhantomJS
PhantomJS是一个无头(headless)的WebKit javascript API
我们可以用它模拟浏览器的操作,也可以用来截图
具体参加官网:
http://phantomjs.org/
模块安装
lxml为解析网页所必需
pip3 install selenium
pip3 install BeautifulSoup4
pip3 install lxml
Driver 下载
这里我们下载Chrome driver和 Phantomjs
其他的driver见官网
http://selenium-python.readthedocs.io/installation.html#drivers
Chrome下载
下载完成后可以放到系统环境变量中,如:
C:\Windows\System32
https://sites.google.com/a/chromium.org/chromedriver/downloads
PhatomJS下载
下载后同样放到系统环境变量中
下载完成解压后只需要将exe文件放到目录下
http://phantomjs.org/download.html
网页分析
我们以幽游白书为例
http://ac.qq.com/ComicView/index/id/543606/cid/1
打开后发现漫画并没有全部加载需要向下翻页才可以加载完毕
之后通过开发者工具分析图片的地址
这里我们通过bs4 来提取出所有img地址
之后通过Python将其保存成图片
程序原理
代码介绍
1. import相关的模块
import selenium.webdriver
from bs4 import BeautifulSoup
2. 调用Chrome或者PhantomJS
driver = selenium.webdriver.Chrome()
#driver = selenium.webdriver.PhantomJS()
3. 获取网页源代码
content=driver.page_source
4. 获取标题和图片地址之后存入字典
5. 新建目录并下载图片
这里首先判断是否有该漫画的目录,如果没有则新建,之后下载图片,图片的名称为列表的索引号
执行结果
注意事项:
建议先用Chrome测试OK,再改用PhantomJS执行
Chrome和PhantomJS在实际向下翻页时有差异,需测试后调节循环次数
为防止被ban,每次爬取采用了随机延迟的方法
只能爬取免费的内容
本脚本仅用于学习用途
源码位置
源码请访问我的github主页也可点击阅读全文:
https://github.com/bsbforever/spider/blob/master/selenium_web.py
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
关注后在公众号内回复“课程”即可获取:
小编的Python入门视频课程!!!
崔老师爬虫实战案例免费学习视频。
丘老师数据科学入门指导免费学习视频。
陈老师数据分析报告制作免费学习视频。
玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
丘老师Python网络爬虫实战免费学习视频。