本文来源吾爱破解论坛
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)
下载附件 保存到相册
运行过程
后记
Selenium&PhantomJS对于那些动态页面和JavaScript返回有效数据的网站特别好使,但是就是效率不是很高
13.png (35.7 KB, 下载次数: 0)
下载附件 保存到相册
2019-11-26 11:15 上传
成果1
14.png (380.7 KB, 下载次数: 0)
下载附件 保存到相册
2019-11-26 11:15 上传
成果2
版权声明:
本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。