pycharm爬取泰迪智能网站里的所有图片并保存到本地磁盘,使用正则表达式解析匹配图片。
时间: 2024-09-09 20:06:39 浏览: 103
在PyCharm中爬取网站图片并保存到本地磁盘,可以使用Python的第三方库,例如requests用于网络请求,BeautifulSoup用于解析网页,以及re用于正则表达式匹配。下面是一个基本的步骤概述:
1. 使用requests库发送HTTP请求获取网页内容。
2. 使用BeautifulSoup解析获取到的网页内容。
3. 使用BeautifulSoup或正则表达式匹配网页中的图片链接。
4. 遍历匹配到的图片链接,使用requests下载图片。
5. 将下载的图片保存到本地磁盘。
下面是一个简单的代码示例:
```python
import os
import requests
from bs4 import BeautifulSoup
import re
def download_image(image_url, save_folder, filename):
response = requests.get(image_url, stream=True)
if response.status_code == 200:
with open(os.path.join(save_folder, filename), 'wb') as f:
for chunk in response.iter_content(1024):
if chunk: # filter out keep-alive chunks
f.write(chunk)
def main():
url = 'http://www.taodizhi.com/' # 泰迪智能网站的URL
page = requests.get(url)
soup = BeautifulSoup(page.text, 'html.parser')
# 使用正则表达式匹配所有图片链接
img_tags = soup.find_all('img')
img_urls = [img.get('src') for img in img_tags if img.get('src')]
save_folder = 'downloaded_images'
if not os.path.exists(save_folder):
os.makedirs(save_folder)
for img_url in img_urls:
# 正则表达式匹配完整的图片URL
img_url = re.findall(r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', img_url)
if img_url:
img_url = img_url[0]
filename = img_url.split('/')[-1]
download_image(img_url, save_folder, filename)
if __name__ == '__main__':
main()
```
注意:
- 请确保遵守目标网站的robots.txt文件和使用条款,不要爬取受版权保护或禁止爬取的内容。
- 如果网站使用了JavaScript动态加载图片,上述方法可能无法获取全部图片,这时可能需要使用Selenium或Pyppeteer等工具来模拟浏览器行为。
- 该代码示例仅提供一个基本的下载框架,实际使用时需要根据目标网站的结构进行相应的调整。
阅读全文