爬取高清站长之家美图(想爬多少爬多少)

方方面面总是会需要使用一些图片做封面或背景。图片有两种来源:一是通过创可贴自己动手修改下就可以用了,还一种就是在网上下载图片。
那如何下载高清并且可以供使用的图片了?我是使用的站长之家网站下载来的图片(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()

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