我正在学习 Python 4/5 个月,这是我从头开始构建的第三个项目,但我无法自己解决这个问题。
此脚本为给定的每个 url 下载 1 个图像。我无法找到有关如何在此脚本中实现线程池执行器或异步的解决方案。我不知道如何将带有图像编号的 url 链接到保存图像部分。我为我需要下载的所有 url 构建了一个 dict,但我如何实际使用正确的名称保存图像?还有什么建议吗?
附注。目前出现的网址只是假的。
同步版本:
进口请求
导入参数解析
进口重新
导入操作系统
导入日志
从 bs4 导入 BeautifulSoup
解析器 = argparse.ArgumentParser()
parser.add_argument("-n", "--num", help="书号", type=int, required=True)
parser.add_argument("-p", dest=r"path_name", default=r"F:\Users\123", help="保存到目录", )
args = parser.parse_args()
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
级别=日志记录。错误)
logger = logging.getLogger(__name__)
def get_parser(url_c):
url = f'https://test.net/g/{url_c}/1'
logger.info(f'主网址:{url_c}')
responce = requests.get(url, timeout=5) # timeout 将引发异常
如果responce.status_code == 200:
page = requests.get(url, timeout=5).content
汤 = BeautifulSoup(page, 'html.parser')
还汤
别的:
responce.raise_for_status()
def get_locators(soup): # 取 get_parser
# 提取第一页/最后一页编号
first = int(soup.select_one('span.current').string)
logger.info(f'首页:{first}')
last = int(soup.select_one('span.num-pages').string) + 1
# 提取img_code和扩展名
链接 = 汤.find('img', {'class': 'fit-horizontal'}).attrs["src"]
logger.info(f'定位器代码:{link}')
code = re.search('galleries.([0-9]+)\/.\.(\w{3})', link)
book_code = code.group(1) # 内部代码
extension = code.group(2) # png 或 jpg
# 提取目录书名
pattern = re.compile('漂亮":"(.*)"')
找到 = 汤.find('脚本', 文本=模式)
string = pattern.search(found.text).group(1)
dir_name = string.split('"')[0]
logger.info(f'目录名:{dir_name}')
logger.info(f'隐藏代码:{book_code}')
打印(f'扩展名:{扩展名}')
打印(f'总页数:{最后}')
打印(f'')
相关分类