请针对网址:https://bbs.zol.com.cn/dcbbs/d15.html 编写Python爬虫。 要求将 ZOL论坛 > 摄影论坛 > 摄影作品论坛 > 动物植物论坛 该论坛 模块下所有帖子的图片爬取回来,每个帖子一个文件夹(文件夹名使用帖子名命 名),文件夹中存放该帖子中所有图片。 例如“八色鸫”帖子中只有一张图片,我们需要建一个名为“八色鸫”的文件夹 ,然后将帖子中的图片存入其中。图片文件命名可以使用数字编号。
时间: 2024-03-29 09:40:45 浏览: 90
好的,这是一个比较典型的爬取论坛图片的任务,可以使用Python的requests和BeautifulSoup库进行实现。下面是具体的代码实现:
```python
import os
import requests
from bs4 import BeautifulSoup
# 设置请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
}
# 论坛模块地址
url = 'https://bbs.zol.com.cn/dcbbs/d15.html'
# 发送请求
response = requests.get(url, headers=headers)
# 解析HTML内容
soup = BeautifulSoup(response.text, 'html.parser')
# 获取动物植物论坛模块的地址
forum_url = soup.select_one('.current-forum a')['href']
# 论坛模块地址
url = 'https:' + forum_url
# 发送请求
response = requests.get(url, headers=headers)
# 解析HTML内容
soup = BeautifulSoup(response.text, 'html.parser')
# 遍历所有帖子
for post in soup.select('.post-list .post-row .post-title a'):
# 获取帖子地址和标题
post_url = 'https:' + post['href']
post_title = post.text.strip()
# 创建文件夹
os.makedirs(post_title, exist_ok=True)
# 发送请求
response = requests.get(post_url, headers=headers)
# 解析HTML内容
soup = BeautifulSoup(response.text, 'html.parser')
# 遍历所有图片
for img in soup.select('.post-topic-body img'):
# 获取图片地址
img_url = img['src']
# 下载图片
response = requests.get(img_url, headers=headers)
with open(os.path.join(post_title, os.path.basename(img_url)), 'wb') as f:
f.write(response.content)
print('Downloaded:', img_url)
```
这段代码首先发送请求获取网页内容,然后使用BeautifulSoup解析HTML内容,获取到动物植物论坛模块的地址。接下来,遍历该模块下的所有帖子,对于每个帖子,创建一个文件夹,然后遍历该帖子下的所有图片,下载并保存到对应的文件夹中。
阅读全文