用python写一个爬取汽车之家图片的爬虫
时间: 2023-05-26 19:05:22 浏览: 126
以下是一个简单的用 Python 爬取汽车之家图片的示例爬虫。
爬虫代码:
```
import requests
import os
from bs4 import BeautifulSoup
def download_img(url, path):
r = requests.get(url, stream=True)
if r.status_code == 200:
with open(path, 'wb') as f:
for chunk in r:
f.write(chunk)
def crawler(base_url, output_dir):
r = requests.get(base_url)
soup = BeautifulSoup(r.text, 'html.parser')
img_tags = soup.find_all('img')
for img in img_tags:
if 'src' in img.attrs:
img_url = img.attrs['src']
if img_url.startswith('//'):
img_url = 'http:' + img_url
elif not img_url.startswith('http'):
img_url = base_url + '/' + img_url
print('Downloading image: %s' % img_url)
filename = os.path.join(output_dir, img_url.split('/')[-1])
download_img(img_url, filename)
if __name__ == '__main__':
base_url = 'https://www.autohome.com.cn/news/'
output_dir = './images'
if not os.path.exists(output_dir):
os.mkdir(output_dir)
crawler(base_url, output_dir)
```
该爬虫将从汽车之家的新闻页面 `https://www.autohome.com.cn/news/` 中爬取所有图片,并将其保存到本地目录 `./images` 中。
首先,爬虫会使用 requests 库向页面发送 GET 请求并获取页面 HTML,接着使用 BeautifulSoup 库将其解析为文档对象。然后,通过查找 HTML 标签中的 img 标签,找到所有图片,并将其下载到本地目录。
在下载图片时,使用 requests 库传递 "stream=True" 参数以保证请求不会立即下载整个响应内容。通过逐块处理响应,可以防止过多占用内存。然后,将内容写入文件中。
在主函数中,定义了基础 URL 和保存图像的输出目录。使用 os 模块确保输出目录存在并调用爬虫函数开始爬取。
阅读全文