Selenium&PhantomJS实战--漫画下载系列
python--Selenium&PhantomJS实战准备工作
https://static.52pojie.cn/static/image/hrline/5.gif
1.python3开发环境
2.相应的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 -m pip install -U selenium
pip install pillow
mylog是日志文件,其他都是自带的包
3.开发环境:这里使用的是pycharm
4.谷歌浏览器:用于抓包分析(其他浏览器也可以)
5.安装PhantomJS,百度教程一堆,也很简单
分析网页结构
https://static.52pojie.cn/static/image/hrline/5.gif
网站是: http://www.1kkk.com/ 搜索引擎前几的网站,应该没啥问题
这个网站的动漫有收费,有免费,这里只能爬免费的动漫
{:17_1055:}
然后随便在首页选择一个动漫,这里选的是宠物天王:http://www.1kkk.com/ch1-767938/
这里稍稍看一下,每个页面就一张图片,下一页,下一章之类的没有直接url,但是可以通过规律直接生成,不过需要获取每章的新链接,稍稍有点麻烦
所以就直接使用selenium直接模拟浏览器动作点击下一页就好啦
完整代码
https://static.52pojie.cn/static/image/hrline/5.gif
创建一个新项目,任意名字.py
# 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)
exceptException 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('_')
# 命名文件夹
self.creatDir(cartoonTitle)
os.chdir(cartoonTitle)
self.sumPage = int(self.browser.find_element_by_xpath('//div[@id="chapterpager"]/a').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('下一页')
NextTag.click()
time.sleep(5)
else:
NextTag = browser.find_elements_by_link_text('下一章')
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中运行就好了{:301_1009:}
效果如下
https://attach.52pojie.cn//forum/201911/26/111544kqqjnghgkr9uc66p.png?l
https://attach.52pojie.cn//forum/201911/26/111547ufc5tz3ou1tt555t.png?l
后记https://static.52pojie.cn/static/image/hrline/5.gif
Selenium&PhantomJS对于那些动态页面和JavaScript返回有效数据的网站特别好使,但是就是效率不是很高{:301_1005:}
不好意思啊,我是小白,这方面不大懂。需要什么信息呢?为什么编译提醒还需要 1.py 文件呢?
我是 win10 64 系统,python 3.7 ,pycharm 的安装也是按搜索教程来的,没有出现找不到系统变量之类的问题。只是之前有个找不到 selenium ,但是我在cmd安装好了 猎奇者 发表于 2019-12-29 21:32
你好。软件都装好以后,编译出错了,不知道什么问题
之前新建了一个1.py 以后我删除了它,然后就出现这 ...
这个就是提示你没找到 1.py这文件。。。具体你这点信息我也没得分析啊 这两个会动态加载,图片网址会显示在HTML中,直接取图片链接下载更好吧。 直接在目录里边能取到每章的url,自己拼一下就可以,然后每个章节是有规律的#ipg1 #ipg2,还能取到每一个章节最大的页数,直接request就好了 谢谢楼主分享! 厉害,向大佬学习。 你这个查看网页 模拟点击 能抓取视频地址吗?? loginnow 发表于 2019-11-26 13:00
你这个查看网页 模拟点击 能抓取视频地址吗??
这个无头苍蝇就是有这个功能 叶王 发表于 2019-11-26 12:04
直接在目录里边能取到每章的url,自己拼一下就可以,然后每个章节是有规律的#ipg1 #ipg2,还能取到每一个章 ...
是的呢,最近在学习selenium,所以就没用request了 谢谢楼主分享,请问mylog是另外要用pip安装的吗? 你好。软件都装好以后,编译出错了,不知道什么问题
之前新建了一个1.py 以后我删除了它,然后就出现这个错误了
页:
[1]
2