Python爬虫是一种强大的工具,可以从互联网上获取大量的数据和图片。在实际使用中,我们经常会遇到需要爬取图片的场景。下面是对Python爬虫图片的总结:
1. 爬取网页上的图片可以使用requests和BeautifulSoup库。其中,requests用于发送请求,BeautifulSoup用于解析网页,找到标签中的图片链接。
import requests from bs4 import BeautifulSoup url = "http://example.com" response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") img_tags = soup.find_all("img") for img in img_tags: img_url = img.get("src") print(img_url)
2. 下载图片可以使用urllib库。该库提供了urllib.request.urlretrieve()函数,可以将图片下载到本地。
import urllib.request url = "http://example.com/image.jpg" urllib.request.urlretrieve(url, "image.jpg")
3. 爬取网页上的大量图片时,可以使用多线程或协程来加速爬取。具体实现方式参考concurrent.futures库。
import concurrent.futures import requests import urllib.request urls = ["http://example.com/image1.jpg", "http://example.com/image2.jpg", "http://example.com/image3.jpg"] def download_image(url): response = requests.get(url) with open(url.split("/")[-1], "wb") as f: f.write(response.content) with concurrent.futures.ThreadPoolExecutor() as executor: executor.map(download_image, urls)
4. 在爬取图片时,注意不要过于频繁地发送请求,以免给目标网站带来过大的负担。同时,为了保护自己的身份,可以设置请求头中的User-agent和Referer。
import requests url = "http://example.com/image.jpg" 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.3", "Referer": "http://example.com"} response = requests.get(url, headers=headers)
总之,Python爬虫在图片爬取方面具备很强的实用性和灵活性,可以为我们带来很多便利。