专栏首页时悦的学习笔记使用Python爬取并下载腾讯动漫

使用Python爬取并下载腾讯动漫

开发环境

操作系统: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
  1. 调用Chrome或者PhantomJS
driver = selenium.webdriver.Chrome()

#driver = selenium.webdriver.PhantomJS()
  1. 获取网页源代码
 content=driver.page_source
  1. 获取标题和图片地址之后存入字典
  1. 新建目录并下载图片

这里首先判断是否有该漫画的目录,如果没有则新建,之后下载图片,图片的名称为列表的索引号

执行结果

注意事项:

  • 建议先用Chrome测试OK,再改用PhantomJS执行
  • Chrome和PhantomJS在实际向下翻页时有差异,需测试后调节循环次数
  • 为防止被ban,每次爬取采用了随机延迟的方法
  • 只能爬取免费的内容
  • 本脚本仅用于学习用途

源码位置

源码请访问我的github主页

https://github.com/bsbforever/spider/blob/master/selenium_web.py

本文分享自微信公众号 - 宅必备(gh_bc574e49c720),作者:宅必备

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL MHA部署 Part 6 MHA故障转移测试

    从上图可以看出,首先管理节点发现MySQL服务挂掉,之后调用masterha_secondary_check脚本分别从另外2个从库检查主库,发现也无法连接

    bsbforever
  • MySQL复制全解析 Part 6 MySQL GTID 生命周期

    MySQL复制全解析 Part 2 一步步搭建基于二进制文件位置的MySQL复制

    bsbforever
  • Oracle RAC变更实验之修改11gR2+公网IP地址(网段不变)

    rac1的 Public IP 从11.12.14.29更改为11.12.14.45

    bsbforever
  • 如何学习领域驱动设计

    封面图:张子瞻的绘画,用丙烯颜料表达了蓝色的海、白色的波浪、棕黄色的沙滩以及墨绿色的树林。

    张逸
  • Mockplus原型交互跟我做之6 - 快速给弹出面板命名

    到这里,我们插入一个有用小技巧的介绍。 在交互设计中,我们经常需要给弹出面板起一个名字,便于查看。 一般的方式,是在属性面板中,通过“名称”来修改。 但...

    奔跑的小鹿
  • 足不出户了解疫情实时状况:腾讯云图10分钟实现疫情数据实时可视化展示

    今天朋友圈被双黄连可抑制冠状病毒刷屏了,数据君温馨提示:大家千万不要在疫情扩散期去药店集中排队“抢药”,双黄连尚无有力证据证明疗效,但是它的广告语对“预防病毒...

    腾讯云数据库 TencentDB
  • Git使用

        yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gc...

    yaohong
  • 最简git Server配置

    最简git Server配置 如何保持多台计算机的项目代码的同步更新呢?通过在一个公用计算机上开启git服务,任何能与该计算机互联的终端都可以同步最新的项目代码...

    Florian
  • 10个有用的 Git 命令提示

    在过去的几年中,git已非诚成熟,成为最常用的代码版本控制系统之一。它被各种语言和各种规模的团队开发人员使用,从小型的开源项目到像linux内核这样的庞大的代码...

    开发者技术前线
  • Windows下git安装使用教程

    git status 此命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。

    李智

扫码关注云+社区

领取腾讯云代金券