python根据关键字爬取搜狗图片

本文介绍了一个使用Python进行图片爬取的实战案例,通过解析搜狗图片搜索结果,筛选并下载图片到本地指定目录。文章详细展示了如何使用requests库获取网页内容,正则表达式解析图片链接,以及利用os库进行文件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import requests
import re
import os
 
def getHTMLtext(url):
	headers = {'user-agent':'Mozilla/5.0'}
	try:
		r = requests.get(url, timeout=30, headers=headers)
		r.raise_for_status()
		r.encoding = r.apparent_encoding
		return r.text
	except:
		print("cannot scrapy the url")
		return ""
 
#解析html文本,筛选出连接
def HTMLparse(link, html):
	try:
		plt = re.findall(r'"thumbUrl":"http://(.*?)"', html)
		for i in range(len(plt)):
			plt[i] = re.sub(r"thumbUrl", "", plt[i])
			plt[i] = re.sub(r":", "", plt[i])
			plt[i] = re.sub(r'"', "", plt[i])
			if plt[i][-1]=='g' and plt[i][-2]=='p' and plt[i][-3]=='j':
				link.append(r"http://"+plt[i])
	except:
		print("error")
 
def main():
	source = input("请输入要查找的图片:")
	link = []
	try:
		url = "http://pic.sogou.com/pics?pid=sogou-site-3b24156ad560a696&query=" + source
		print(url)
		html = getHTMLtext(url)
		print(html)
		HTMLparse(link, html)
	except:
		print("error2")
	root = "d://ai//sogou//打架//"
	headers = {'user-agent':'Mozilla/5.0'}
	count = 0
	for url in link:
		path = root + url.split('/')[-1]
		try:
			if not os.path.exists(root):
				os.mkdir(root)
			if not os.path.exists(path):
				r = requests.get(url, headers=headers)
				with open(path, 'wb') as file:
					file.write(r.content)
					file.close()
					print("successful safed:"+ url.split('/')[-1])
					count = count + 1
			else:
				print(url.split('/')[-1] + "has already existed")
		except:
			print("cannot safed:" + url.split('/')[-1])
			pass
	print("total count = ", count)
main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值