如何使用Python编写一个包含图片爬取功能的强大网络爬虫?请提供相关的代码结构和示例。
时间: 2024-10-26 16:03:11 浏览: 21
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
在Python中编写一个包含图片爬取功能的网络爬虫,通常会使用requests库获取网页内容,然后使用BeautifulSoup解析HTML,找到并下载图片链接。PIL库(Python Imaging Library)或其更现代版本(Pillow)用于处理图片。以下是一个简单的例子:
```python
import requests
from bs4 import BeautifulSoup
import os
from urllib.parse import urljoin
# 设置目标URL和保存图片的目录
url = 'https://example.com' # 替换为你想要抓取的网站
save_dir = 'images' # 图片保存目录,需要先创建
if not os.path.exists(save_dir):
os.makedirs(save_dir)
def download_image(img_url, save_path):
response = requests.get(img_url)
with open(save_path, 'wb') as f:
f.write(response.content)
def scrape_images(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 找到所有img标签
img_tags = soup.find_all('img')
for img_tag in img_tags:
img_url = img_tag['src'] # 获取图片链接
full_img_url = urljoin(url, img_url) # 转为绝对路径
# 下载图片
img_save_path = os.path.join(save_dir, img_url.split('/')[-1])
download_image(full_img_url, img_save_path)
# 运行爬虫
scrape_images(url)
```
这个脚本首先发送GET请求获取页面内容,然后解析HTML找寻所有的`<img>`标签。对于每个找到的图片,它会构造出完整的图片URL,并下载到指定的目录。
请注意,实际使用时可能会遇到网站反爬策略,如验证码、动态加载等,这可能需要额外的技术手段解决。同时,尊重网站的robots.txt文件以及法律法规,合理爬取。
阅读全文