标签:webdriver chap trie 允许 优化 utf-8 url ima common
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 废话
差不多就是这样 人懒 没怎么优化 要是可以 再用一个正则表达式 把具体的章节内容爬下来 用一个数组对应起来 然后命名
我自己用 能用就行 不管了 爬虫博大精深 真好玩啊
这是自己原来博客的,估计那个服务器以后不怎么用,放到这保存一下
标签:webdriver chap trie 允许 优化 utf-8 url ima common
原文地址:http://www.cnblogs.com/deen-/p/7220626.html