用python写一个脚本,可根据某网页遍历该网站所有网页,将网址存入website.txt,找到所有包含pdf下载链接的网页,并下载10个pdf文件到指定文件夹,每下载成功一个打印出pdf文件名及网页网址,结束后打印出是否下载成功。
时间: 2024-02-29 07:57:11 浏览: 104
一个基于Python的简单的用于抓取以及下载页面中pdf文件的爬虫脚本+源代码+文档说明
以下是一个可实现此功能的Python脚本示例:
```python
import requests
from bs4 import BeautifulSoup
import os
# 设置下载文件夹
download_folder = './downloads'
# 创建下载文件夹
if not os.path.exists(download_folder):
os.mkdir(download_folder)
# 设置网站链接
url = 'https://example.com'
# 存储所有网页链接的数组
pages = []
# 获取该网站的所有网页链接
def get_pages(url):
global pages
try:
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')
for link in soup.find_all('a'):
href = link.get('href')
if href not in pages and href.startswith(url):
pages.append(href)
get_pages(href)
except:
pass
# 找到所有包含PDF下载链接的网页,并下载10个PDF文件
def download_pdfs():
count = 0
for page in pages:
try:
response = requests.get(page)
soup = BeautifulSoup(response.content, 'html.parser')
for link in soup.find_all('a'):
href = link.get('href')
if href.endswith('.pdf'):
count += 1
if count <= 10:
filename = href.split('/')[-1]
filepath = os.path.join(download_folder, filename)
with open(filepath, 'wb') as f:
f.write(requests.get(href).content)
print(f'Downloaded {filename} from {page}')
except:
pass
# 将所有网页链接存入website.txt文件
def save_pages():
with open('website.txt', 'w') as f:
f.write('\n'.join(pages))
# 运行程序
if __name__ == '__main__':
get_pages(url)
save_pages()
download_pdfs()
if len(os.listdir(download_folder)) == 10:
print('Download successful!')
else:
print('Download failed.')
```
该脚本首先会根据给定的网站链接遍历该网站的所有网页,并将链接存储在一个数组中。然后,它会找到所有包含PDF下载链接的网页,并下载前10个PDF文件到指定文件夹中。每当成功下载一个PDF文件时,该脚本会打印出文件名及其所在的网页链接。最后,该脚本会将所有网页链接存储在一个名为`website.txt`的文件中,并打印出是否下载成功。
阅读全文