随便写写爬虫
0x00 前言(哦 上面有一首歌 =- =)
想起来,好久都没看漫画了,哎,都养得够肥了,自从高考之后,好像除了神精榜看完了之外,就再也没看过其他漫画,《斗罗大陆》《斗破苍穹》之类,啊,好多都没看。突然想看了,就去网上找了一下。我的天,什么网站,这么多广告,哎,也是,人家凭什么免费给你看,广告在所难免的。算了算了,不想说废话了,最近废话说得也有点多。直接上代码
0x00 代码
哦忘了说 这脚本是基于python 语言的
#-*-coding:utf-8-*- __author__ = 'Deen' from selenium import webdriver import os from os import path as osp from selenium.common.exceptions import NoSuchElementException import urllib2 import urllib import re #参考的是别的大神的博客 #http://python.jobbole.com/87434/ #我自己写得比较粗糙 # 先获取所有章节的url # 在章节列表页面,采用正则表达式,获取url def get_all_chapter(main_chapter_url): #设置headers user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)' headers = { 'User-Agent' : user_agent } request=urllib2.Request(main_chapter_url,headers=headers) reponse=urllib2.urlopen(request) content=reponse.read().decode('utf-8') #写正则表达式 pattern=re.compile('a\shref="/mh/(.*?)"\starget="_blank',re.S) items=re.findall(pattern,content) #注意: #这里获取的第一个item 并不是我们想要的 #而且我们获取的并非是一个完整的url 只是网址的一部分 所以还要拼凑 chapter_nums=len(items) chapter_url_list=[] #第一项不要 for i in range(1,chapter_nums): url="http://www.tazhe.com/mh/"+items[i] chapter_url_list.append(url) return chapter_url_list #在写一个下载器,储存我们保存的漫画 #k为计数器 def download(image_url,k,chapter_num): #由于python的文件操作不允许重复创建文件夹 所以我们要加一个判定判定是否是第一次创建文件夹 if k==1: #这是下载的漫画存放的路径 os.mkdir("E:\\cartoon\\"+str(chapter_num)) urllib.urlretrieve(image_url,"E:\\cartoon\\"+str(chapter_num)+"\\%s.jpg"%k) else: urllib.urlretrieve(image_url,"E:\\cartoon\\"+str(chapter_num)+"\\%s.jpg"%k) def get_image_url(chapter_url,chapter_num): broswer=webdriver.PhantomJS() broswer.get(chapter_url) image_num=1 #Y用于计数 来给下载的图片命名 while True: #选出网页中image的网址 image_url_list=broswer.find_elements_by_css_selector('#qTcms_pic') for i in image_url_list: image_url=i.get_attribute('src') download(image_url,image_num,chapter_num) broswer.find_element_by_css_selector('a.next').click() try: #查找页面中是否出现了这个id ,如果出现了 说明页面到了最后一面 结束循环 broswer.find_element_by_css_selector('#bgDiv') break except NoSuchElementException: image_num=image_num+1 #主函数 if __name__=='__main__': #先输入显示所有章节的地址,用一个字符串数组进行储存 chapter_url_list=get_all_chapter("http://www.tazhe.com/mh/9282/") chapter_num=1 #章节计数器 for url in chapter_url_list: print "正在下载第"+str(chapter_num)+"章" #调用函数 get_image_url(url,chapter_num) chapter_num=1+chapter_num
0x02 废话
差不多就是这样 人懒 没怎么优化 要是可以 再用一个正则表达式 把具体的章节内容爬下来 用一个数组对应起来 然后命名
我自己用 能用就行 不管了 爬虫博大精深 真好玩啊
这是自己原来博客的,估计那个服务器以后不怎么用,放到这保存一下