爬虫简单案例,使用多线程、多进程下载小说封面图片

 


前言

随笔记,目标网址为https://www.qqxs.cc/fenlei1/1/,下载小说封面

 

1.正常使用面向对象方法

      确定url ==>获取响应==>xpath抽取响应内容中的图片地址==>遍历图片地址,保存至文件中即可

      使用retrying模块,可使获取响应的时候超时自动重试,

""
难点在于获取响应之前要先判断你要的文件是否已经存在了,学会retry的用法,
多线程千万要注意变量会共享,尽量不要初始化定义共有变量
"""

import requests
import json
import os, os.path
import time
from lxml.html import etree
from retrying import retry


class ImageDownload:
    def __init__(self, pages=2):
        """
        :param pages: 指定小说下载页数
        """
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36   (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36"
        }
        self.start_url = "https://www.qqxs.cc/fenlei1/1/"
        self.start_time = time.time()
        self.pages = pages
        # self.num=1

    @retry(stop_max_attempt_number=3)  # retry 设置获取响应最大尝试次数
    def get_response(self, url):
        "获得未解码的响应"
        response = requests.get(url, headers=self.headers, timeout=5)
        assert response.status_code == 200 响应状态码不是200则retry
        return response

    def parse_response(self, url):
        "解析响应,返回图片urls"
        html_response = etree.HTML(self.get_response(url).content.decode('gbk'))
        cover_urls = html_response.xpath("//div[@id='al
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值