首页 编程教程正文

Selenium&PhantomJS实战--漫画下载系列

piaodoo 编程教程 2020-02-22 22:14:05 1110 0 python教程

本文来源吾爱破解论坛

python--Selenium&PhantomJS实战
准备工作
嗨学网


1.python3开发环境
2.相应的python包:
[Python] 纯文本查看 复制代码

from selenium import webdriver
from myLog import MyLog as mylog
import os
import time
import sys
from PIL import Image


selenium 和 PIL 分别通过cmd输入下方命令安装
[Python] 纯文本查看 复制代码
python -m pip install -U selenium
pip install pillow

mylog是日志文件,其他都是自带的包
3.开发环境:这里使用的是pycharm
4.谷歌浏览器:用于抓包分析(其他浏览器也可以)
5.安装PhantomJS,百度教程一堆,也很简单


分析网页结构
嗨学网

网站是: http://www.1kkk.com/   搜索引擎前几的网站,应该没啥问题

这个网站的动漫有收费,有免费,这里只能爬免费的动漫
嗨学网

然后随便在首页选择一个动漫,这里选的是宠物天王:http://www.1kkk.com/ch1-767938/


这里稍稍看一下,每个页面就一张图片,下一页,下一章之类的没有直接url,但是可以通过规律直接生成,不过需要获取每章的新链接,稍稍有点麻烦

所以就直接使用selenium直接模拟浏览器动作点击下一页就好啦

完整代码
嗨学网

创建一个新项目,任意名字.py
[Python] 纯文本查看 复制代码
# selenium 之1kkk漫画获取
#!/usr/bin/evn python3
# #-*- coding: utf-8 -*

from selenium import webdriver
from myLog import MyLog as mylog
import os
import time
import sys
from PIL import Image

class GetCartoon(object):
    def __init__(self):
        self.startUrl = 'http://www.1kkk.com/ch1-767938/'  # 想更换漫画修改这里
        self.log = mylog()
        self.browser = self.getBrowser()
        self.saveCartoon(self.browser)
        self.browser.quit()
        self.sumPage = 1

    def getBrowser(self):
        browser = webdriver.PhantomJS()
        try:
            browser.get(self.startUrl)
        except  Exception as e:
            mylog.error('open the %s faild, exit the script...' % self.startUrl)
            sys.exit(-1)
        browser.implicitly_wait(20)
        return browser

    def saveCartoon(self, browser):
        cartoonTitle = browser.title.split('_')[0]
        # 命名文件夹
        self.creatDir(cartoonTitle)
        os.chdir(cartoonTitle)
        self.sumPage = int(self.browser.find_element_by_xpath('//div[@id="chapterpager"]/a[last()]').text)
        i = 1
        b = 0
        while 1:
            if self.sumPage >= i:
                imgName = str(i + b) + '.png'
                # 截屏并命名成imgName
                browser.get_screenshot_as_file(imgName)
                # 剪切图片操作
                img =Image.open(imgName)
                cropped = img.crop((0, 100, 1200, 2100))
                cropped.save(imgName)
                self.log.info('save img %s' % imgName)
                i += 1
                NextTag = browser.find_elements_by_link_text('下一页')[1]
                NextTag.click()
                time.sleep(5)
            else:
                NextTag = browser.find_elements_by_link_text('下一章')[1]
                NextTag.click()
                time.sleep(5)
                i = 1
                b = b + self.sumPage
                self.log.info('save img sccess')


    def creatDir(self, dirName):
        if os.path.exists(dirName):
            self.log.info('create directory %s failed, have a same name file ' % dirName)
        else:
            try:
                os.makedirs(dirName)
            except:
                self.log.error('create directory %s failed' % dirName)
            else:
                self.log.info('create directory %s success' % dirName)

if __name__ == '__main__':
    go = GetCartoon()


代码不长,python🐂🖊
运行直接在pycharm中运行就好了嗨学网

效果如下

12.png (72.93 KB, 下载次数: 1)

下载附件  保存到相册

运行过程

2019-11-26 11:15 上传


嗨学网

嗨学网

后记嗨学网

Selenium&PhantomJS对于那些动态页面和JavaScript返回有效数据的网站特别好使,但是就是效率不是很高嗨学网



13.png (35.7 KB, 下载次数: 0)

下载附件  保存到相册

2019-11-26 11:15 上传

成果1

成果1

14.png (380.7 KB, 下载次数: 0)

下载附件  保存到相册

2019-11-26 11:15 上传

成果2

成果2

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7868.html

搜索