这篇教程的目的是实现漫画的爬取,并生成接口
一:效果展示:
开门见山,首先来展示看完此篇教程后,能达到的效果:
以酷酷漫画为例子:
首先是我们需要爬取的网页:寄宿学校的朱丽叶 1话
截图:
然后是我们实现的效果:
进阶实现效果,循环多张并做成接口,实现整个章节漫画的爬取:
二:分析原理
原理其实很简单,就是通过Python的urllib2模块来获取整个页面的源码,再使用BeautifulSoup来分割源码的各个节点,最后再通过简单的字符串截取获得图片地址,如果有需求,还可以通过Flask-restful做成相应的接口。
环境的配置(针对Windows,如果对Python比较多的了解完全可以跳过这一步)
1.安装Python
安装Python的步骤就不去详细说了,网上教程一大堆,下载稳定的2.7或者3.X版本都可以。推荐去官网下载。CMD下输入Python可以进入Python模式,则说明Python安装成功
2.安装各种模块(urllib2,BeautifulSoup,Flask-restful)
CMD进控制台,再进入到Python安装目录\Scripts(我的目录是C:\Python27\Scripts)下,pip install 模块名 即可安装各种模块,如:
输入命令:
pip install beautifulsoup4
即可安装BeautifulSoup模块
3.代码
import urllib2
import re
from bs4 import BeautifulSoup
from distutils.filelist import findall
#encoding = gbk
KukuComicImageBae ="http://n.1whour.com/"
url = "http://comic.kukudm.com/comiclist/2160/52245/"
def getKukuComicPage():
imgList = []
try:
page = urllib2.urlopen(url+str(1)+".htm", timeout=10)
data = page.read()
print data+'\n'
soup = BeautifulSoup(data,"html.parser")
script = soup.findAll('script')[3].text
print script+'\n'
imageurl = script.split("src=")[1].split("\"")[2].split("'")[0]
print imageurl+'\n'
image_url = KukuComicImageBae+imageurl
imgList.append(image_url)
except Exception as e:
print('Error:', e)
return imgList
print getKukuComicPage()
输出结果:
分步骤分析:
1.获取到网页源码:
page = urllib2.urlopen(url+str(1)+".htm", timeout=10)
data = page.read()
打印出的data即是我们需要的网页源码
<html><head>
<meta http-equiv='Content-Type' content='text/html; charset=gbk'>
<title>寄宿学校的朱丽叶 1话</title>
<link href='/style.css' rel='stylesheet' type='text/css'>
<script language='javascript' src='/js2/js0.js'></script>
<script language='javascript' src='/js2/js4.js'></script>
</head><body>
<table width='760' border='0' cellspacing='0' cellpadding='0' align='center'>
<tr><td><iframe src='/top.htm' width='760' height='96' marginwidth='0' marginheight='0' hspace='0' vspace='0' frameborder='0' scrolling='no'></iframe><br><script src="/js/play-d1.js"></script></td></tr></table>
<table width='760' border='1' align='center' cellspacing='1' bgcolor='#FFFFFF'>
<tr> <td width='760' valign='top' align='center'>寄宿学校的朱丽叶 1话 | 共50页 | 当前第1页 | 跳转至第 <input name="page1" id="page1" value="1" type="text" class="bottom" size="3" maxlength="3"> 页 <input type="button" class="bottom" value="确定" onclick="window.location.href='' + document.getElementById('page1').value + '.htm';"><br><script language='javascript'>
document.write("<IMG SRC='"+m201304d+"newkuku/2016/06/21/寄宿学校的朱丽叶/001/000150P.jpg'><span style='display:none'><img src='"+m201304d+"newkuku/2016/06/21/寄宿学校的朱丽叶/001/00024W7.jpg'></span>");
</script><br><script src="/js/play-d2.js"></script><img src='/images/t2.gif' border='0' width='52' height='19'> 共50页 | <script src='/ad/sc_soso.js'></script> | 第1页 <a href='/comiclist/2160/52245/2.htm'><img src='/images/d.gif' border='0' width='52' height='19'></a><script src="/js/play-d3.js"></script></td></tr></table>
<table width='760' border='0' cellspacing='0' cellpadding='0' align='center'><tr><td colspan='0' align='center'><script src="/js/play-d4.js"></script><br><script src='/js/stat.js'></script></td></tr></table></body></html>