muzi-xiaoren / kaobei_Crawler

拷贝漫画爬虫
Apache License 2.0
13 stars 2 forks source link

download.py 里面的正则匹配似乎匹配不上导致报错,可能是新漫画的链接格式改了。 #1

Closed XuWeinan123 closed 1 month ago

XuWeinan123 commented 4 months ago

我调整了一下,修改的部分

    pattern = r'/(\d+)\.(png|jpg)'
    result1 = re.search(pattern, src)
    if result1:
        # 如果找到匹配,使用该数字并添加相应的文件扩展名
        image_name = f"{page}_{j}_{result1.group(1)}.{result1.group(2)}"
    else:
        # 如果没有找到匹配的 png 或 jpg,提取 URL 的最后一部分
        last_part = src.split('/')[-1]
        image_name = f"{page}_{j}_{last_part}"

    image_path = os.path.join(title, image_name)
XuWeinan123 commented 4 months ago
image

下载一个章节会提示多次 failed,最后提示 success,是因为它在不断地重试下载失败的图片吗?

XuWeinan123 commented 4 months ago

我想注释掉但是不知道会不会错过一些重要的报错提示

XuWeinan123 commented 4 months ago

image 下载一个章节会提示多次 failed,最后提示 success,是因为它在不断地重试下载失败的图片吗?

当然这是另一个问题了……

muzi-xiaoren commented 4 months ago

image 下载一个章节会提示多次 failed,最后提示 success,是因为它在不断地重试下载失败的图片吗?

屏幕截图 2024-04-28 124850

这个原因主要是因为上面这个函数,拷贝漫画网页是动态加载的。 需要通过 driver.find_element(By.TAG_NAME, 'body').send_keys(Keys.SPACE) 这段函数不断模拟对页面按空格的操作,来加载页面,为什么是按空格不是模拟下滑呢,是因为测试后空格的效率更高,比下滑能更快的加载页面。所以对于一些页面比较多和页面比较少的漫画,按空格的次数是不同的。为了便利页数比较少的漫画的下载,我设置了一个比较小的count数,即按空格的次数,然后通过 down(src, count * 2, title, mode) 这样一个递归。如果下载到的页面和该页面图片数量不一样,就增大count的次数,再次循环。 下载好的图片没有反复下载,报错是因为没有下载到足量的图片,而下载好的图片也不会反复下载。 所以是逻辑上的问题,如果你下载的漫画每章页数比较多,你不想反复循环,可以到函数入口处,增大count的值。看你的报错,200页一章,count初值可以设置在16。 for src in src_list: count = 4 page += 1 down(src, count, title, mode) (上面这段在if name == "main"的最下面的位置)

muzi-xiaoren commented 4 months ago

我调整了一下,修改的部分

    pattern = r'/(\d+)\.(png|jpg)'
    result1 = re.search(pattern, src)
    if result1:
        # 如果找到匹配,使用该数字并添加相应的文件扩展名
        image_name = f"{page}_{j}_{result1.group(1)}.{result1.group(2)}"
    else:
        # 如果没有找到匹配的 png 或 jpg,提取 URL 的最后一部分
        last_part = src.split('/')[-1]
        image_name = f"{page}_{j}_{last_part}"

    image_path = os.path.join(title, image_name)

是有的漫画格式为png或者jpg吗,你下载的漫画链接给我一下,我去用你的代码跑一下,没问题的话就用你的。

muzi-xiaoren commented 4 months ago

我想注释掉但是不知道会不会错过一些重要的报错提示

下载提示嫌烦可以注释掉的哈哈哈。

XuWeinan123 commented 4 months ago

我调整了一下,修改的部分

    pattern = r'/(\d+)\.(png|jpg)'
    result1 = re.search(pattern, src)
    if result1:
        # 如果找到匹配,使用该数字并添加相应的文件扩展名
        image_name = f"{page}_{j}_{result1.group(1)}.{result1.group(2)}"
    else:
        # 如果没有找到匹配的 png 或 jpg,提取 URL 的最后一部分
        last_part = src.split('/')[-1]
        image_name = f"{page}_{j}_{last_part}"

    image_path = os.path.join(title, image_name)

是有的漫画格式为png或者jpg吗,你下载的漫画链接给我一下,我去用你的代码跑一下,没问题的话就用你的。

迷宫饭漫画,链接是:https://www.mangacopy.com/comic/shejianshangdedixiacheng

我后来因为自己的需求又改了下命名方式的代码,就不 pull request 了。

muzi-xiaoren commented 4 months ago

我调整了一下,修改的部分

    pattern = r'/(\d+)\.(png|jpg)'
    result1 = re.search(pattern, src)
    if result1:
        # 如果找到匹配,使用该数字并添加相应的文件扩展名
        image_name = f"{page}_{j}_{result1.group(1)}.{result1.group(2)}"
    else:
        # 如果没有找到匹配的 png 或 jpg,提取 URL 的最后一部分
        last_part = src.split('/')[-1]
        image_name = f"{page}_{j}_{last_part}"

    image_path = os.path.join(title, image_name)

是有的漫画格式为png或者jpg吗,你下载的漫画链接给我一下,我去用你的代码跑一下,没问题的话就用你的。

迷宫饭漫画,链接是:https://www.mangacopy.com/comic/shejianshangdedixiacheng

我后来因为自己的需求又改了下命名方式的代码,就不 pull request 了。

好的,十分感谢。 我最终选择了偷懒的方式,为防止以后图片链接变化导致代码失效,不从url中提取字符串进行拼接了。 另外,迷宫饭原来漫画已经完结了,等动漫更完我就去看。

muzi-xiaoren commented 1 month ago

解决了