隨便寫寫爬蟲
阿新 • • 發佈:2017-07-22
css_ 查找 get att range () 第一個 輸入 保存
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 廢話
差不多就是這樣 人懶 沒怎麽優化 要是可以 再用一個正則表達式 把具體的章節內容爬下來 用一個數組對應起來 然後命名
我自己用 能用就行 不管了 爬蟲博大精深 真好玩啊
這是自己原來博客的,估計那個服務器以後不怎麽用,放到這保存一下
隨便寫寫爬蟲