本文共 1726 字,大约阅读时间需要 5 分钟。
前言
本文是一个实用的技术指南,旨在帮助开发人员快速了解如何从网页中抓取图片数据。代码和图片均来源于网络,仅供学习和交流使用,禁止商业用途。如有任何问题,请联系我们进行处理。
import requestsfrom pyquery import PyQuery as pqimport time
proxies = { 'https': '218.75.69.50:39590'}headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}def start_request(url): response = requests.get(url, headers=headers, proxies=proxies) response.encoding = 'GBK' return response.textdef parse(text, page_num): doc = pq(text) images = doc('div.list ul li img').items() current_image_num = 1 for image in images: img_url = image.attr('src') image_content = requests.get(img_url, headers=headers, proxies=proxies).content save_path = os.path.dirname(os.path.abspath(__file__)) + '\\image\\' + f'imgs\\{page_num}\\{current_image_num}.jpg' os.makedirs(os.path.dirname(save_path), exist_ok=True) with open(save_path, 'wb') as f: f.write(image_content) print(f"正在下载第{page_num}页第{current_image_num}张图片...") current_image_num += 1 print(f"写入完成,共下载了{current_image_num-1}张图片。")def main(): base_url = 'http://www.netbian.com' html = start_request(base_url) parse(html, 1) # 爬取指定范围的页面 for page in range(2, 100): url = f'{base_url}/index_{page}.htm' html = start_request(url) parse(html, page)if __name__ == "__main__": main() 工具导入
使用了requests 库来抓取网页内容,PyQuery 集成了一些命令行提取功能,非常适合网页解析任务。 请求设置
设置了User-Agent 字符串,让请求看起来更自然,避免被反爬机制拦截。 页面编码
网页默认使用gbk 字符编码,本地显示可能会出现乱码,需要手动指定编码格式。 图片下载与存储
读取图片链接后,将图片内容下载并保存到指定目录中,支持多页抓取和分页存储。转载地址:http://etioz.baihongyu.com/