下面是“简单实现Python爬取网络图片”的完整攻略:
准备工作
首先需要安装好Python,并在命令行中用以下命令安装好所需的第三方库:
pip install requests # 用于发送HTTP请求
pip install beautifulsoup4 # 用于解析HTML文档
步骤
1. 获取要爬取的页面
爬取网络图片的第一步是获取要爬取的页面,可以使用requests
库发送HTTP请求并获得响应,示例如下:
import requests
url = 'https://example.com/images'
response = requests.get(url)
html_text = response.text
这个例子中,我们向https://example.com/images
发送了一个GET请求,并得到了响应。得到的响应是一个HTML文档,我们把它存储在变量html_text
中。
2. 解析HTML文档
接下来需要从HTML文档中解析出所有的图片链接。这个步骤可以使用beautifulsoup4
库。示例代码如下:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_text, 'html.parser')
img_tags = soup.find_all('img')
这个例子中,我们使用BeautifulSoup
类把HTML文档解析成一个Python对象soup
,然后使用soup.find_all('img')
方法找到HTML文档中的所有img
标签。img_tags
是一个包含所有img
标签的列表。
3. 获取图片链接
接下来需要从img
标签中获取图片链接。注意,有些img
标签中的src
属性并不是图片链接,可能是与图片无关的其他资源。以下代码展示如何获取图片链接:
img_urls = []
for img in img_tags:
img_url = img.get('src')
if not img_url:
continue
if 'http' not in img_url:
img_url = url + '/' + img_url
img_urls.append(img_url)
在这个例子中,我们遍历了所有的img
标签,对每个标签调用get('src')
方法获取它的src
属性。然后把链接存储在列表img_urls
中。
注意,有些img
标签的src
属性可能是相对路径而不是绝对路径,我们需要把它们转成绝对路径。
4. 下载图片
现在我们已经获取了所有图片的链接,可以使用requests
库下载图片并保存到本地。以下是一个下载单张图片的示例代码:
url = img_urls[0]
response = requests.get(url)
with open('image.jpg', 'wb') as f:
f.write(response.content)
在这个例子中,我们向列表img_urls
中的第一个链接发送了一个GET请求,并得到了响应。响应的内容是二进制数据,我们使用open
方法以二进制写入模式打开一个文件,并把响应的内容写入文件中。
当然,这个示例只下载了列表中的第一个图片,如果需要下载所有图片,可以把上述代码放在一个循环里面。
以下是一个同时下载多张图片的示例代码:
for i, img_url in enumerate(img_urls):
response = requests.get(img_url)
with open(f'image_{i}.jpg', 'wb') as f:
f.write(response.content)
在这个例子中,我们遍历了所有的图片链接,并为每个链接下载图片。图片的文件名格式为image_i.jpg
,其中i
是图片在列表img_urls
中的索引。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:简单实现Python爬取网络图片 - Python技术站