给基友下载漫画看

代码:

 # !usr/bin/python3.4
# -*- coding:utf-8 -*- import requests
import os
import time
import re
from lxml import etree
import random def geturl(url,postdata):
header = {'User-Agent':
'Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5',
'Referer':'http://m.1kkk.com/vol1-6871/',
'Host': 'manhua1023.61-174-50-131.cdndm5.com',
'Accept': 'image/png,image/*;q=0.8,*/*;q=0.5',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Connection': 'keep-alive',
} s = requests.Session()
r = s.post('http://m.1kkk.com/userdata.ashx',data = postdata)
_cookies = r.cookies
#print(r.content)
rs = s.get(url, headers=header,cookies = _cookies)
return rs def get(url):
header = {'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
'Referer': 'http://www.1kkk.com/manhua589/',
'Host': 'www.1kkk.com'} # 解析网页
html_bytes = requests.get(url, headers=header) return html_bytes def mget(url):
header = {'User-Agent':
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
'Referer': 'http://m.1kkk.com/manhua589/',
'Host': 'm.1kkk.com'} # 解析网页
html_bytes = requests.get(url, headers=header) return html_bytes # 去除标题中的非法字符 (Windows)
def validateTitle(title):
# '/\:*?"<>|'
rstr = r"[\/\\\:\*\?\"\<\>\|]"
new_title = re.sub(rstr, "", title)
return new_title def prints(timesleep):
print('暂停' + str(timesleep) + '秒后开始批量下载图片,请保持网络畅通...')
time.sleep(timesleep) # 解析js
def regnext(js):
reg = r'(var.+?.split)'
all = re.compile(reg);
alllist = re.findall(all, js)
return alllist # 递归创建文件夹
def createjia(path):
try:
os.makedirs(path)
except:
print('目录已经存在:' + path) if __name__ == '__main__': html = get('http://www.1kkk.com/manhua589/').content.decode('utf-8', 'ignore') page = etree.HTML(html.lower())
# 得到网址后缀
hrefs = page.xpath('//ul[@class="sy_nr1 cplist_ullg"][2]/li/a/@href')
# 得到编号
hrefnames = page.xpath('//ul[@class="sy_nr1 cplist_ullg"][2]/li/a/text()')
# 得到页数
hrefpages = page.xpath('//ul[@class="sy_nr1 cplist_ullg"][2]/li/text()') href = []
hrefname = []
hrefpage = []
number = 1 # 不知道里面那几卷是不是漫画里面的
# 先抓下来再说
# 得到网址后缀
for temp in hrefs:
towurl = temp
href.append(towurl)
# 得到编号
for temp in hrefnames:
hrefname.append(temp)
# 得到页数
for temp in hrefpages:
hrefpage.append(temp.replace("页", "")) j = 0
filenamep = '../data/' + str(hrefname[0]) + "/"
createjia(filenamep) for i in range(0, len(href)):
for j in range(len(hrefpage)): # 6871、6872。。
hrefnumber = str(href[i]).replace("ch54-","").replace("/","").replace("vol1-","")
#print(hrefnumber)
# 构造jsurl
# 得到
# http://www.1kkk.com/vol1-6871/imagefun.ashx?cid=6871&page=1&key=65abd421f4aed565&maxcount=10
jsurl = "http://www.1kkk.com" + str(href[i]) + "/imagefun.ashx?cid=" + str(hrefnumber) + "&page=" + str(j + 1) + "&key=65abd421f4aed565&maxcount=10"
print(jsurl) # 构造image网址
html = get(jsurl).content.decode('utf-8', 'ignore')
html1 = regnext(html)
html1 = html1[0].replace("'.split", "").split('|') # http://manhua1023.61-174-50-131.cdndm5.com/1/589/6871/102_9224.jpg?cid=6871&key=d8ce90e0b3f013f292ef77e84da88990&type=1
image_1url = "http://manhua1023." + str(html1[19]) + "-" + str(html1[18]) + "-" + str(html1[9]) + "-" + str(
html1[10]) + ".cdndm5.com/1/589/" + str(href[i]) + "/" + str(html1[20]) + "?cid=" + str(6871) + "&key=" + str(
html1[8]) + "&type=1"
print(image_1url) # 构造image网址
filess = open(filenamep + str(j + 1) + '.jpg', 'wb') # 伪装posrdata
postdata = {
'cid': 6871,
'language': 1,
'mid': 589,
'page': j + 1,
'tp': 8,
'uid': 0
} # 即使正确的网址也是不能下载
pic = geturl(image_1url,postdata)
filess.write(pic.content)
filess.close()
print('已经写入第' + str(j + 1) + '张图片')
j = j + 1 # 每一次下载都暂停1-3秒
loadimg = random.randint(1, 3)
print('暂停' + str(loadimg) + '秒')
time.sleep(loadimg)

selenium抓取:

 #!/usr/bin/python3.4
# -*- coding: utf-8 -*- from selenium import webdriver
import time
from selenium.webdriver.common.keys import Keys
import re # 去除标题中的非法字符 (Windows)
def validateTitle(title):
rstr = r"[\/\\\:\*\?\"\<\>\|]" # '/\:*?"<>|'
new_title = re.sub(rstr, "", title)
return new_title def getimg():
# http://www.cnblogs.com/fnng/p/3238685.html
# 打开火狐浏览器
# browser = webdriver.Chrome()
browser = webdriver.Firefox() # 设置浏览器大小
browser.set_window_size(1200, 900)
# 输入网址
browser.get("http://m.1kkk.com/vol1-6871/")
# 根据各自网速来判断网址加载时间
time.sleep(10) for i in range(10000): # 关掉广告
browser.find_element_by_class_name("ad_cross").click() # 翻页到最后面
browser.execute_script("""
(function () {
var y = 0;
var step = 100;
window.scroll(0, 0); function f() {
if (y < document.body.scrollHeight) {
y += step;
window.scroll(0, y);
setTimeout(f, 100);
} else {
window.scroll(0, 0);
document.title += "scroll-done";
}
} setTimeout(f, 1000);
})();
""")
print("下拉中...")
#time.sleep(180)
while True:
if "scroll-done" in browser.title:
break
else:
print("还没有拉到最底端...")
time.sleep(10) # while True:
# # 判断是否存在这个东西
# select = browser.find_element_by_xpath('//a[@class="readTipForm"]')
# if select:
# break
# else:
# print("还没有拉到最底端...")
# time.sleep(60) print("正在下载图片中...")
# 图片的命名
name = validateTitle(browser.current_url)
print("正在截图...")
time.sleep(5) # 截图
browser.save_screenshot("../jpg/cartoon/" + str(i + 1) + str(name) + ".png")
time.sleep(5) # 点击阅读下一章
browser.find_element_by_class_name("readTipForm").click()
print("准备进入下一章...")
time.sleep(5) browser.quit() if __name__ == '__main__':
getimg()

1kkk的更多相关文章

  1. python之lxml(xpath)

    bs4确实没这个好用,bs4的树太复杂 lxml很好 定位非常好 详细解说在注释里面有了 #!/usr/bin/python3.4 # -*- coding: utf-8 -*- from lxml ...

  2. javascript正则表达式(二)——方法

    正则表达式规则见:http://www.cnblogs.com/wishyouhappy/p/3756812.html,下面说明相关方法 String相关方法 概括: search() replace ...

  3. 零基础如何学Python爬虫技术?

    在作者学习的众多编程技能中,爬虫技能无疑是最让作者着迷的.与自己闭关造轮子不同,爬虫的感觉是与别人博弈,一个在不停的构建 反爬虫 规则,一个在不停的破译规则. 如何入门爬虫?零基础如何学爬虫技术?那前 ...

  4. selenium&phantomjs实战--漫话爬取

    为什么直接保存当前网页,而不是找到所有漫话链接,再有针对性的保存图片? 因为防盗链的原因,当直接保存漫话链接图片时,只能保存到防盗链的图片. #!/usr/bin/env python # _*_ c ...

随机推荐

  1. 后序/中序--->前序

    preOrder 5 3 2 4 8 6 9   midOrder 2 3 4 5 6 8 9  postOrder 2 4 3 6 9 8 5 #include <iostream> # ...

  2. linux 任务调度 系统任务调度

    linux  at 针对运行一次的任务 crontab   控制计划任务的命令 crond系统服务 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程, 与windows ...

  3. Unity3d各平台资源路径文件夹

    之前一直是PC项目,公司终于考虑移动平台了,但是试验了几把,感觉移动平台资源管理路径还是有很多隐藏的注意事项. 比如在PC上可以做到随便读写,但是在移动平台就涉及到权限问题. 看到小伙伴的总结,还是要 ...

  4. iOS-APP的沙河目录

    为了安全的缘故,一个应用只能拥有一些目录,用来写入应用的数据或者首选项参数.当一个应用安装到系统,会创建该应用的home目录.以下列出一些home目录下的主要的子目录:/AppName.app:存放应 ...

  5. jQuery对象与DOM对象之间的转换

    刚开始学习jQuery,可能一时会分不清楚哪些是jQuery对象,哪些是DOM对象.至于DOM对象不多解释,我们接触的太多了,下面重点介绍一下jQuery,以及两者相互间的转换. 什么是jQuery对 ...

  6. 64位gcc编译32位汇编

    由于使用as和ld来编译链接汇编程序,在使用C库的时候比较麻烦,需要输入比较多的指令,所以使用gcc进行编译链接.由于书中内容是32位汇编程序,但是机器使用的是64位操作系统,自带的gcc也是64位的 ...

  7. AWK处理日志入门(转)

    前言 这两天自己挽起袖子处理日志,终于把AWK给入门了.其实AWK的基本使用,学起来也就半天的时间,之前总是靠同事代劳,惰性呀. 此文仅为菜鸟入门,运维们请勿围观. 下面是被处理的日志的示例,不那么标 ...

  8. win7录屏工具

    psr.exe http://jingyan.baidu.com/article/aa6a2c14d330710d4d19c47c.html

  9. R编程感悟

    虽然大学阶段曾经学过C++, matlab等编程,但是真的几乎完全还给了老师- 所以,我一直将R 作为自己真正学习的第一门语言.我从2012年初在来美国的第二个rotation中开始接触到了R.当时不 ...

  10. 转 SQL Server中关于的checkpoint使用说明

    在SQL Server中有一个非常重要的命令就是CheckPoint,它主要作用是把缓存中的数据写入mdf文件中. 其实在我们进行insert, update, delete时,数据并没有直接写入数据 ...