Python:關於爬蟲(2)
阿新 • • 發佈:2017-11-26
open request 進行 chrom pen -i 它的 chrome quest
這個案例主要是用於抓取妹子圖片
推薦網址:http://jandan.net/ooxx
當我們切換圖片的時候,會發現地址欄裏面只有頁碼數在發生變化,其他的都沒有改變
我們通過審查元素可以看到,最新的頁碼其實是保存在一個span標簽裏面的,我們可以通過它的class屬性去獲取最新的頁面
圖片都存在於img標簽裏面,通過src屬性可以看到圖片的來源,獲得這些信息之後我們就可以通過img這個關鍵部分來進行相關搜索
我們先來抓取前十頁的圖片
import urllib.request # 訪問網頁必須用到這個 import os def url_open(url): req = urllib.request.Request(url) req.add_header(‘User-Agent‘,‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36‘) response = urllib.request.urlopen(req) html = response.read() return html def get_page(url): """ :param url: :return: 頁碼數【字符串類型】 """ html = url_open(url).decode(‘utf-8‘) # 加上偏移量 a = html.find(‘current-comment-page‘)+23 b = html.find(‘]‘, a) return html[a:b] def find_imgs(url): html = url_open(url).decode(‘utf-8‘) img_addrs = [] a = html.find(‘img src=‘) while a != -1: b = html.find(‘.gif‘, a, a+140) if b != -1: if html[a+9] != ‘h‘: img_addrs.append(‘http:‘ + html[a+9:b+4]) else: img_addrs.append(html[a+9:b+4]) else: b = a + 9 a = html.find(‘img src=‘, b) return img_addrs def save_imgs(folder, img_addrs): for each in img_addrs: # 通過/切分字符串,獲取圖片名稱 filename = each.split(‘/‘)[-1] # 寫入文件夾 with open(filename, ‘wb‘) as f: img = url_open(each) f.write(img) def download_mm(folder=‘OOXX‘, pages=10): """ :param folder: 文件夾名稱 :param pages: 下載頁數 :return: """ os.mkdir(folder) # 創建一個文件夾 os.chdir(folder) # 改變目錄,後面保存的圖片就會直接保存進去 url = ‘http://jandan.net/ooxx/‘ # 獲取最新頁數 page_num = int(get_page(url)) # 遍歷前十頁 for i in range(pages): page_num -= i page_url = url+‘page-‘+str(page_num)+‘#comments‘ img_addrs = find_imgs(page_url) save_imgs(folder, img_addrs) if __name__ == ‘__main__‘: download_mm()
執行這段代碼,我們就能從自己創建的文件夾裏面找到我們抓取到的圖片,除此之外為了避免ip的頻繁訪問而導致的一些問題,我們還可以通過上節的內容[http://www.jianshu.com/p/6754f4eb067a],使用代理ip來進行處理。
Python:關於爬蟲(2)