单线程爬虫下载2000+张背景图片

import  requests
from lxml import etree

class ImageSpider(object):

    def __init__(self):
        self.base_url = "http://sc.chinaz.com/tupian/beijingtupian_{}.html"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36"
        }

    # 请求方法
    def get_html_text(self, url):
        response = requests.get(url, headers=self.headers)
        if response.status_code == 200:
            return response.content.decode()
        else:
            return None


    #解析列表页返回图片url列表
    def parse_list_page(self, text):
        html = etree.HTML(text)
        images_tag = html.xpath("//div[@class='box picblock col3']")
        items = []
        for i_t in images_tag:
            item = {}
            item["title"] = i_t.xpath(".//img/@alt")[0]
            item["url"] = i_t.xpath(".//img/@src2")[0]
            items.append(item)
        return items


    #保存图片到本地
    def save_imgs_toLocal(self, img_url, img_title):
        with open("./data/单线程背景图片爬虫/" + img_title + ".jpg", "wb") as fp:
            fp.write(requests.get(img_url, headers=self.headers).content)
            print(img_title + "save to local direction sucessfully...")



    #主方法
    def run(self):
        for i in range(2,80):
            text = self.get_html_text(self.base_url.format(i))
            data = self.parse_list_page(text)
            for d in data:
                self.save_imgs_toLocal(d["url"], d["title"])



if __name__ == '__main__':
    isr = ImageSpider()
    isr.run()

爬取结果如下:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值