爬妹子圖

利用 selenium + PhantomJS 爬取 妹子圖

import requests
import time
import os
from selenium import webdriver

class Spider(object):

    def __init__(self):
        self.driver = webdriver.PhantomJS()

    def Get_pages(self, maxpage):
        # 想要爬取的頁(yè)面數(shù)量
        for page in range(1, maxpage+1):
            url = "http://www.mzitu.com/page/" + str(page)
            self.Get_content_page(url)

    def Get_content_page(self, url):
        # 獲取封面圖片對(duì)應(yīng)的詳細(xì)圖片地址
        self.driver.get(url)
        a = self.driver.find_elements_by_id('pins')
        b = a[0].find_elements_by_tag_name('a')
        links = []
        for i in b:
            if i.get_attribute('href') not in links:  # 該網(wǎng)頁(yè)源碼片段有兩次網(wǎng)址重復(fù),過(guò)濾下
                links.append(i.get_attribute('href'))
        for link in links:
            self.Get_picture_page(link)

    def Get_picture_page(self, url):
        #獲取該組圖片數(shù)量及圖片下載地址
        self.driver.get(url)
        title_site = self.driver.find_element_by_tag_name('h2')         #該組圖片名字位置
        title = title_site.text                                         #該組圖片名字
        os.mkdir(title)                                                 #以該名字建立文件夾
        pages_site = self.driver.find_element_by_class_name('pagenavi')  #從標(biāo)簽欄找出圖片最大頁(yè)數(shù)
        all_sites = pages_site.find_elements_by_tag_name('a')
        page = []
        for i in all_sites:
            page.append(i.text)
        picture_max_number = int(page[-2]) + 1                             #最大頁(yè)數(shù)在倒二位置
        for i in range(1, picture_max_number):
            picture_link = url + '/' + str(i)
            self.Download_picture(picture_link, title, i)
        print('Done one')



    def Download_picture(self,link,filename,picture_number):
        #下載圖片

        headers = {                                                         #圖片下載鏈接的請(qǐng)求頭
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, sdch',
            'Accept-Language': 'zh-CN,zh;q=0.8',
            'Cache-Control': 'max-age=0',
            'Connection': 'keep-alive',
            'Host': 'i.meizitu.net',
            'If-Modified-Since': 'Thu, 02 Mar 2017 14:12:51 GMT',
            'If-None-Match': "58b82863-28887",
            'Upgrade-Insecure-Requests': '1',
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
        }
        time.sleep(1)
        self.driver.get(link)
        path = os.getcwd() + '\\' + filename + '\\' + str(picture_number) + '.jpg'
        e = self.driver.find_element_by_tag_name('p')
        f = e.find_element_by_tag_name('img')
        picture_download_link = f.get_attribute('src')
        picture = requests.get(picture_download_link, headers=headers)
        if picture.status_code == 200:
            open(path, 'wb').write(picture.content)

if __name__ == '__main__':
    spider = Spider()
    spider.Get_pages(3)

By The Way : 營(yíng)養(yǎng)跟不上了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 利用 BeautifulSoup + Requests 爬取 妹子圖
    交易狗二哈閱讀 499評(píng)論 0 2
  • 有個(gè)網(wǎng)站 http://www.meizitu.com/ 里面有很多妹子,所以就動(dòng)了心思,是不是可以爬到我的本地來(lái)...
    豪哥的世界閱讀 782評(píng)論 3 0
  • 文檔流的概念,如何讓元素脫離文檔流 文檔流指的是瀏覽器按照html的內(nèi)容按順序解析并呈現(xiàn),遇到行內(nèi)元素就往行內(nèi)放,...
    柯良勇閱讀 413評(píng)論 0 0
  • 我是誰(shuí)?第一次正式的思考這個(gè)問(wèn)題,是看了張德芬的 《遇見(jiàn)未知的自己》,而今天提筆的時(shí)候,我腦子里飄過(guò)來(lái)一些...
    啟橋閱讀 356評(píng)論 0 0
  • 己經(jīng)進(jìn)入秋天模式了,但天氣還不是“天涼好個(gè)秋",尤其是這一周,好像又熱了許多,雖然天氣有些不爽,但整個(gè)人的心情,整...
    鄭治中閱讀 135評(píng)論 1 2