赞
踩
这段代码是一个简单的网络爬虫,用于从网站 pic.netbian.com
上下载图片。下面是代码的逐行解释:
1-5. 导入所需的库:requests
用于发起网络请求,lxml.etree
用于解析HTML,random
用于生成随机数,time
用于暂停程序,os
用于与操作系统交互。
8-9. 获取用户输入:搜索ID和需要下载的页数。ID和页数在网址框获取
10-16. 构建请求的URL,设置请求头,并使用 requests.get()
发起网络请求获取网页内容。
使用 lxml.etree.HTML()
解析获取到的HTML内容。
使用XPath提取图片链接。这里假设图片链接在HTML中的特定位置。
23-24. 检查是否已存在以搜索ID命名的文件夹,如果不存在则创建一个。
19-24. 遍历提取到的图片链接,发起请求获取图片内容,并将其保存到之前创建的文件夹中。图片的名称是链接中的最后一部分。在保存每张图片后,程序会随机暂停1到3秒钟。
27-32.打印保存图片的名称。
以下为完整代码:
- import requests
- from lxml import etree
- import random
- import time
- import os
-
- if __name__ == '__main__':
- id = input('请输入搜索ID: ')
- i=input('亲,需要多少页图片:')
- for page in range(int(i)):
- url = 'https://pic.netbian.com/e/search/result/index.php?page='+str(page)+'&searchid=' + id
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0',
- 'reffer':'https://www.douban.com/'
- }
- response = requests.get(url=url, headers=headers)
- html = etree.HTML(response.text)
-
- # 提取图片链接
- img_urls = html.xpath('//div[@class="slist"]/ul/li/a/img/@src')
-
- # 创建文件夹
- if not os.path.exists(id):
- os.makedirs(id)
-
- # 下载图片
- for img_url in img_urls:
- img_response = requests.get(url='https://pic.netbian.com/' + img_url)
- img_name = img_url.split('/')[-1]
- with open(os.path.join(id, img_name), 'wb') as f:
- f.write(img_response.content)
- print(f"已保存图片:{img_name}")
- time.sleep(random.randint(1, 3))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。