python为在线漫画网站自制非官方API(未完待续)

https://github.com/cleverdeng/pinyin.py(一定要多看文档,一定要多看文档,一定要多看文档,重要的事要说三遍,因为我经常不看文档)

下面是搜索漫画API开始:分析:我选择的网站是:(对于网站我只想说非常抱歉)为什么选择这个网站,因为是我最常逛的在线漫画网站,仅此而已接下来我们看一下它的搜索页面,当你在首页输入书名,点击搜索以后,URL会跳转举个例子:搜索“一拳超人”结果页面如下:?title=一拳超人&language=1这样我们就知道搜索结果页面,你可以手动将 一拳超人 改成你喜欢的漫画名,看到会不会跳转到那本漫画的搜索结果页上但是结果页上内容太多了,并不只有我要的那本漫画,于是我又做了一件事,将中文改成pinyin?title=yiquanchaoren&language=1结果页面上只有我需要的漫画,现在发现了拼音搜索会更精确当我们知道这样就可以进入搜索页,那我们就可以分析这个页面,找到我们需要的信息那么我们需要什么呢?任何浏览器的F12都是强大的,在这个页面上按下F12,就是新世界的大门,哈哈哈……定位元素,发现需要的信息是在 class="ssnrk" 中(友情提示,F12下的源码是解析JS以后的,想知道现实情况最后先输出在一个文件上看看)#coding:utf-8import requestswfile = open('url.html','w')r = requests.get('?title=yiquanchaoren').contentwfile.write(r)这是最简单的测试方法,将源码写进一个文件中,然后去文件中找有没有 class="ssnrk" ,如果存在以后就以文件的元素结构分析(以后的每一个页面最好都做一下这步)现在发现文件中也有这个元素,OK,我们需要什么呢?漫画名和它的地址,当然你要图片也可以我们发现class="ssnrk"元素下<div class="ssnr_yt"><dl><a href="/manhua-yiquanchaoren/" title="一拳超人"><img height="127" width="95" src="" /></a></dl>里面包含了我们要的一切,名称,链接,图片那么我们怎么得到这些有效信息呢?#coding:UTF-8import urllib2from bs4 import BeautifulSoupfrom bs4 import UnicodeDammitimport requestsimport reimport json#搜索结果页面URLurl='?title=guanlangaoshou'r = requests.get(url).contentsoup = BeautifulSoup(r)#找出所有class="ssnr_yt"元素,然后循环找出下面的a元素,放进找一个list中ssjg_list=[]for line in soup.find_all(class_="ssnr_yt"):ssjg_list.append(line.find('a'))#循环将所有图片,URL,名称放进字典中z_url=""#总的字典json_ss = {}#结果数量json_ss['num']=len(ssjg_list)#计数器j_s=0for line in ssjg_list:j_s=j_s+1#单个字典json_s={}soup_a = BeautifulSoup(str(line))json_s['title']=soup_a.a.get('title')#找出a元素title属性的值json_s['url']=z_url+soup_a.a.get('href')#找出a元素hresf属性的值json_s['img']=soup_a.a.img.get('src')#找出a元素下img元素src属性的值json_ss[j_s]=json_s#以json形式输出print json.dumps(json_ss,ensure_ascii=False,indent=2)为什么这里搜索内容变成guanlangaoshou呢?因为有些漫画真的有多个结果,比如这个guanlangaoshou ,就有四个下面是得到的结果:{ "3": {"url": "","img": "","title": "灌篮高手" }, "1": {"url": "","img": "","title": "灌篮高手剧场版" }, "2": {"url": "","img": "","title": "灌篮高手十日后" }, "num": 4, "4": {"url": "","img": "","title": "灌篮高手全国大赛篇(全彩)" }}现在写的都是小零件和一步一步测试,等到最后会组装起来搜索结果先告一段落,,现在已搜索到的结果为前提,进行下一步,找出这本漫画所有的章节的URL:这次以 yiquanchaoren 为例:URL:这是漫画的章节页,目前是74话(挺少的,看着不过瘾)继续使用F12这个武器,会发现章节的URL都在class=nr6 lan2下的a中:#coding:UTF-8import urllib2from bs4 import BeautifulSoupfrom bs4 import UnicodeDammitimport requestsimport reimport jsonurl=''r = requests.get(url).contentsoup = BeautifulSoup(r)#找出所有class="nr6 lan2"下所有aclass_a = soup.find_all(class_="nr6 lan2")s = BeautifulSoup(str(class_a)).find_all('a')#这个list用来存放所有章节URLurl_list=[]z_url = ''#循环所有a,获取URLfor line in s:bs_a = BeautifulSoup(str(line))#这个判断是用来去除不需要的URL,它们是已开头,正确的URL是/开头if not bs_a.a.get('href').split('/')[0]:w_url = z_url+bs_a.a.get('href')url_list.append(z_url+bs_a.a.get('href'))#去重排序URLprint sorted(list(set(url_list)),key=str.lower)这样就得到了所有章节的URL又到十点,睡觉,下次继续

自己变得跟水晶一般透明,

python为在线漫画网站自制非官方API(未完待续)

相关文章:

你感兴趣的文章:

标签云: