pycharm爬取https://music.douban.com/top250所有页面图片的代码
时间: 2025-01-06 08:52:05 浏览: 16
以下是一个使用Python和Pycharm爬取https://music.douban.com/top250所有页面图片的示例代码:
```python
import requests
from bs4 import BeautifulSoup
import os
import time
def create_directory(dir_name):
if not os.path.exists(dir_name):
os.makedirs(dir_name)
def get_page(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
return response.text
def parse_page(html):
soup = BeautifulSoup(html, 'html.parser')
images = soup.select('.nbg img')
return [img['src'] for img in images]
def download_image(url, dir_name):
try:
img_data = requests.get(url, timeout=10).content
image_name = url.split('/')[-1]
with open(os.path.join(dir_name, image_name), 'wb') as f:
f.write(img_data)
print(f"Downloaded: {image_name}")
except Exception as e:
print(f"Failed to download {url}: {e}")
def main():
base_url = 'https://music.douban.com/top250'
dir_name = 'douban_top250_images'
create_directory(dir_name)
for i in range(10): # 爬取10页
url = f"{base_url}?start={(i*25)}"
print(f"Processing page: {i+1}")
html = get_page(url)
image_urls = parse_page(html)
for img_url in image_urls:
download_image(img_url, dir_name)
time.sleep(1) # 暂停1秒,避免请求过于频繁
if __name__ == "__main__":
main()
```
这个程序的工作原理如下:
1. 首先,我们定义了一些辅助函数:
- `create_directory` 用于创建保存图片的目录。
- `get_page` 用于获取网页内容。
- `parse_page` 用于解析网页,提取图片URL。
- `download_image` 用于下载单个图片。
2. 在 `main` 函数中,我们设置了爬取的起始URL和保存图片的目录。
3. 使用一个循环来爬取10页(每页25张图片)。
4. 对于每一页,我们执行以下步骤:
- 获取页面内容
- 解析页面,提取图片URL
- 下载所有图片
5. 在每次循环结束后,程序暂停1秒,以避免请求过于频繁。
使用这段代码时,请注意遵守相关网站的使用条款和robots.txt文件的规定。爬取数据时应当适度,避免给服务器带来过大负担。
阅读全文