Maxwells8
2023-02-11 17:49:47 +08:00
发现 2 个问题
1.图中的“采莲女儿,采莲女儿”,一直循环,无法收敛
2.太长的东西输出断开,它知道后面还有东西,但是强行截止
如:写一个 python 程序,遍历网页的文件目录,并且下载所有的文件到本地目录
必应的输出:
```python
# 导入 requests 库和 BeautifulSoup 库
import requests
from bs4 import BeautifulSoup
# 定义一个函数,接受一个网页的 URL 作为参数,返回该网页下的所有文件和子目录的链接
def get_links(url):
# 发送 HTTP 请求,获取网页内容
response = requests.get(url)
# 解析 HTML ,获取所有的<a>标签
soup = BeautifulSoup(response.text, "html.parser")
links = soup.find_all("a")
# 创建一个空列表,用于存储文件和子目录的链接
result = []
# 遍历所有的<a>标签
for link in links:
# 获取<a>标签的 href 属性,即链接的地址
href = link.get("href")
# 如果链接的地址以 http 或 https 开头,说明是一个完整的 URL ,直接添加到结果列表
if href.startswith("http") or href.startswith("https"):
result.append(href)
# 否则,说明是一个相对路径,需要拼接上网页的 URL ,再添加到结果列表
else:
result.append(url + href)
# 返回结果列表
return result
# 定义一个函数,接受一个文件的 URL 和一个本地目录作为参数,下载该文件到本地目录
def download_file(url, directory):
# 发送 HTTP 请求,获取文件内容
response = requests.get(url)
# 获取文件的名称,即 URL 的最后一部分
filename = url.split("/")[-1]
# 拼接本地目录和文件名称,得到本地文件的路径
filepath = directory + filename
# 打开本地文件,以二进制写入模式
with open(filepath, "wb") as f:
# 将文件内容写入本地文件
f.write(response.content)
# 打印下载成功的信息
print(f"Downloaded {url} to {filepath}")
# 定义一个函数,接受一个网页的 URL 和一个本地目录作为参数,递归地遍历该网页下的所有文件和子目录,并下载所有的文件到本地目录
def crawl_and_download(url, directory):
# 获取该网页下的所有文件和子目录的链接
links = get_links(url)
# 遍历所有的链接
for link in links:
# 如果链接的地址以.html 或.htm 结尾,说明是一个子网页,递归地调用本函数
if link.endswith(".html") or link.endswith(".htm"):
crawl_and_download(link, directory)
# 否则,说明是一个文件,调用下载文件
```
就断开了。。