标题: [其他] 如何读取网页内容下载子网页内的文件? [打印本页]
作者: xp3000 时间: 2020-5-26 21:53 标题: 如何读取网页内容下载子网页内的文件?
本帖最后由 xp3000 于 2020-5-26 21:57 编辑
类型如下,网页地址:
http://www.ting89.com/books/5868.html
里面有子网页,在下载网页里面有下载地址,
http://mp32b.ting89.com:9090/科幻有声/三体/01.mp3
有的网站是这样的
http://xxxx/xxxx/书名/这里是上传的日期每一个都不一样/数字.mp3
比如在批处理窗口输入网站回车后,
如何获取倒数第1个/前面或倒数第2个/前面作为下载目录,把mp3下载下来?
作者: ivor 时间: 2020-5-27 10:50
本帖最后由 ivor 于 2020-5-27 12:58 编辑
- #! /usr/bin/env python3
- # coding:utf-8
-
- from bs4 import BeautifulSoup
- import requests
- import re
- import os
-
- site = "http://www.ting89.com/books/68.html"
- domain = re.search(r'(https?)://.*?/', site).group(0)
-
- html = requests.get(site)
- soup = BeautifulSoup(html.content, "html.parser")
- chapter = soup.find("div", class_="compress").findAll("a")
- title = soup.find("div", class_="conlist").find('h1').text
-
- for i in chapter:
- chapter_html = requests.get(domain + i['href']).content.decode('gbk')
- mp3_site = re.search(r'(?<=datas=\(")https?.*\.mp3', chapter_html).group(0)
- title = re.search(r'(?<=/)[\u4E00-\u9FA5_\d]*?(?=/\d)', mp3_site).group(0)
- if not os.path.exists(title):
- os.mkdir(title)
- mp3_name = re.search(r"\d+(\(完\))?\.mp3", mp3_site).group(0)
- if os.path.exists('{0}/{1}'.format(title, mp3_name)):
- print('{0}/{1} exist. pass!!!'.format(title, mp3_name))
- continue
- print('{0}/{1} is downloading.'.format(title, mp3_name))
- success = True
- while success:
- try:
- mp3 = requests.get(mp3_site).content
- success = False
- except:
- success = True
- print("网络重置,继续尝试访问。")
- with open('{0}/{1}'.format(title, mp3_name), 'wb+') as file:
- file.write(mp3)
复制代码
跳过已下载章节,运行环境:python3,不是批处理!
结果演示:
三体/001.mp3 exist. pass!!!
三体/002.mp3 exist. pass!!!
三体/003.mp3 exist. pass!!!
三体/004.mp3 is downloading.
......
作者: xp3000 时间: 2020-5-27 12:36
谢谢,一会试下.
批处理不知道为什么,好像是二次输入时候有?号老是失败
作者: xp3000 时间: 2020-5-28 09:17
python3.8下载着一会儿就不动了,
估计是网站不让连续下载或下载多了,
再次打开时候连接无法回答,请问在哪里插入间隔时间?
还有如果是倒数第2个/前面作为下载目录修改哪里?
不知道是不是后台在整理,
以前看见很多:……书名/年份+月份/名称.MP3或者……年份/书名/随机数字目录/名称.MP3
现在也变得统一起来为:……书名/名称.MP3
作者: xczxczxcz 时间: 2020-5-28 14:17
这个网站下载 较慢,多数这样的网站 都比较慢。
我用 PS 测试了下,连续较快下载,会被踢。
然后 再测试用 异步 下载。发现 连续 600 多篇都没踢。你可以试试把上面的脚本改成 异步 试试。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |