Board logo

标题: [其他] 如何读取网页内容下载子网页内的文件? [打印本页]

作者: 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 编辑
  1. #! /usr/bin/env python3
  2. # coding:utf-8
  3. from bs4 import BeautifulSoup
  4. import requests
  5. import re
  6. import os
  7. site = "http://www.ting89.com/books/68.html"
  8. domain = re.search(r'(https?)://.*?/', site).group(0)
  9. html = requests.get(site)
  10. soup = BeautifulSoup(html.content, "html.parser")
  11. chapter = soup.find("div", class_="compress").findAll("a")
  12. title = soup.find("div", class_="conlist").find('h1').text
  13. for i in chapter:
  14.     chapter_html = requests.get(domain + i['href']).content.decode('gbk')
  15.     mp3_site = re.search(r'(?<=datas=\(")https?.*\.mp3', chapter_html).group(0)
  16.     title = re.search(r'(?<=/)[\u4E00-\u9FA5_\d]*?(?=/\d)', mp3_site).group(0)
  17.     if not os.path.exists(title):
  18.         os.mkdir(title)
  19.     mp3_name = re.search(r"\d+(\(完\))?\.mp3", mp3_site).group(0)
  20.     if os.path.exists('{0}/{1}'.format(title, mp3_name)):
  21.         print('{0}/{1} exist. pass!!!'.format(title, mp3_name))
  22.         continue
  23.     print('{0}/{1} is downloading.'.format(title, mp3_name))
  24.     success = True
  25.     while success:
  26.         try:
  27.             mp3 = requests.get(mp3_site).content
  28.             success = False
  29.         except:
  30.             success = True
  31.             print("网络重置,继续尝试访问。")
  32.     with open('{0}/{1}'.format(title, mp3_name), 'wb+') as file:
  33.         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