爬取高清站長之家美圖(想爬多少爬多少)

方方面面總是會需要使用一些圖片做封面或背景。圖片有兩種來源:一是通過創可貼自己動手修改下就可以用了,還一種就是在網上下載圖片。
那如何下載高清並且可以供使用的圖片了?我是使用的站長之家網站下載來的圖片(http://sc.chinaz.com/tag_tupian/OuMeiMeiNv.html),這個網站圖片高清,質量好,可以供使用。所以,本文教大家使用Python爬取美女圖片,並保存在本地。

from lxml import etree
import urllib.request
import os, time


class OuMeiSpider(object):
    def __init__(self, start_page, end_page):
        self.start_page = start_page
        self.end_page = end_page
        self.frist_url = 'http://sc.chinaz.com/tag_tupian/OuMeiMeiNv.html'
        self.url = 'http://sc.chinaz.com/tag_tupian/OuMeiMeiNv_{}.html'
        self.headers = {
            'User-Agent': 'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
}
    def get_request(self, page):
        if page == 1:
            url = self.frist_url
        else:
            url = self.url.format(page)
        # 構建請求對象
        request = urllib.request.Request(url=url, headers=self.headers)
        return request

    def parse_content(self, content):
        tree = etree.HTML(content)
        src_list = tree.xpath('//div[@id="container"]/div/div/a/img/@src2')
        img_name_list = tree.xpath('//div[@id="container"]/div/div/a/img/@alt')
        for img_src in src_list:
            # 拿到圖片鏈接
            print(img_src)
            img_name = img_name_list[src_list.index(img_src)]
            file_name = img_name + '.' + str(img_src.split('.')[-1])

            dirname = 'oumei'
            print("正在下載%s-----" % file_name)
            file_path = os.path.join(dirname, file_name)
            # 寫入圖片
            urllib.request.urlretrieve(img_src,file_path)
            print("結束下載%s-----" % file_name)
            time.sleep(2)

    def get_response(self, request):
        response = urllib.request.urlopen(request)
        content = response.read().decode('utf8')
        print(content)
        return content

    def run(self):
        for page in range(self.start_page, self.end_page + 1):
            # 拼接地址
            request = self.get_request(page)
            content = self.get_response(request)
            self.parse_content(content)


def main():
    start_page = int(input('請輸入起始頁:'))
    end_page = int(input("請輸入終止頁:"))
    obj = OuMeiSpider(start_page, end_page)
    obj.run()


if __name__ == '__main__':
    main()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章