如何使用代码爬取百度和搜狗图片,助力人工智能与深度学习数据搜集

人工智能与深度学习这一领域,收集图片数据显得尤为关键。百度与搜狗,作为我们常见的图片平台,我们能否找到一种简单的方式,来获取我们想要的个性化图片?接下来,我将为大家展示如何编写爬取代码。

百度图片爬取优势

百度是国内著名的搜索引擎,它的图片库内容丰富,种类齐全。无论是日常生活中的图片,还是专业领域的图表,都能在这里找到。以医疗行业为例,研究人员需要收集各种疾病的临床照片来辅助医学影像识别的研究,而百度能够提供大量的原始资料。对于从事开发和研究的专业人士来说,拥有这样一个便捷且内容丰富的图片资源库,是获取数据的极大便利。

百度图片搜索支持多种查找方法,包括文字查找和图片查找等。通过运用搜索语法,可以更精确地找到图片。比如,可以加入特定地区、年份或风格的限制条件,这样的搜索结果能够满足研究和开发对精确数据的需要。

import requests
import re
import time
import os
 
 
def saveImg(imgurlList, imgOs):
    for i in imgurlList:
        try:
            response = requests.get(url=i).content
        except:
            print("error!")
        else:
            imgName = i[28: 36]
            with open(imgOs + imgName + ".jpg", "wb") as file:
                file.write(response)
            print(i + " 下载完成!!")
 
 
def get_asjson(page, gsm, word):
    url = f"https://image.baidu.com/search/acjson?tn=resultjson_com&logid=9123806616981181340&ipn=rj&ct=201326592&is=&fp=result&fr=&word={word}&queryWord={word}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=&hd=&latest=&copyright=&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&expermode=&nojc=&isAsync=&pn={str(30 * int(page))}&rn=30&gsm={gsm}&{str(int(time.time() * 1000))}="
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
        'Referer': 'https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1637758492843_R&pv=&ic=&nc=1&z=&hd=&latest=&copyright=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&dyTabStr=MCwzLDYsMiw0LDEsNSw4LDcsOQ%3D%3D&ie=utf-8&sid=&word=hello',
        'Cookie': 'BDqhfp=hello%26%26-10-1undefined%26%2628989%26%2635; BAIDUID=0C2336F5F3D356371C46DF079632E0C8:FG=1; BAIDUID_BFESS=0C2336F5F3D356371C46DF079632E0C8:FG=1; BIDUPSID=0C2336F5F3D356371C46DF079632E0C8; __yjs_duid=1_32693704d239fea9266064fc8a3d25631637737833661; PSTM=1637737880; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; BDRCVFR[dG2JNJb_ajR]=mk3SLVN4HKm; userFrom=null; BDRCVFR[-pGxjrCMryR]=mk3SLVN4HKm; delPer=0; PSINO=6; __yjs_st=2_ZGU4ODA5ZTdmNzczMzgxNzRiZWZhNTdkODVkY2E5MzQ3NzM3Nzc2MzZlNjYzZmRiMWVjOTlmNWQzZDA3NWY1MzM2M2NkNjNmMjMzZWVlYzQxNGQ2ODIzYjlkNTdhYTUyZjdhNWQwNjQxZWE1YTI0MWZiNzQ1NTE0N2NlNTgwNjZjODlkNWVlZWI2ZDBkNjUzNmNiZDE3NzUyYTA4ZjkxYjI1NzNhODBjOGZhZTBmMzZkY2IwOWJmNjMxNjEzNmUxYjQxZmZhM2M1ODUzYTFkNTM4NTE5MzZjZjRkODliMTE1MmRmMDY1MjI4OGJiM2I3ZGMzMDdiNjI4MWE3NDgxZV83XzQyODU3N2M0; H_PS_PSSID=35295_34446_35104_31254_35237_35049_34584_34505_35245_34578_34872_26350_35210_35145_22160; indexPageSugList=%5B%22hello%22%2C%22bello%22%2C%22hello%20%22%5D; cleanHistoryStatus=0; ab_sr=1.0.1_MTJmNTIwNGNlNmI5NDg2YmZiZTI1OTM1MGZhNTJhZTZlMzVmODE2NmEwZjg5MjNlZWZjZWY1YTY3ZjQ2Yzc2MWZiNGRlODY2ZDJjOGE3N2RhMzg2NjcxZjEzY2ZiMDQ4ODNjYzgyZTZlNWM2NGQ4YjlhMzBlMWE1ZjU0ZTY2NzAxYmM0ZGRkOTM0MGI3NzUwOWZjODY2ODE5NmU1N2E1Yw=='
    }
    response = requests.get(url=url, headers=headers).text + "1111"
    gsm = re.findall('"gsm":"(.*?)",', response)[0]
    data = re.findall('"hoverURL":"(.*?)",', response)
    return gsm, data
 
 
 
 
if __name__ == "__main__":
    a = "1e"
    key_word = "阳台"  # 修改你要爬取的关键字
    img = key_word + "_img\"
    os.mkdir(img)
    for i in range(1, 2):  #通过改变第二个数,修改要爬取的页数
        asjson1 = get_asjson(i, a, key_word)
        saveImg(asjson1[1], img)
        a = asjson1[0]
        while True:
            asjson2 = get_asjson(int(i) + 1, a, key_word)
            saveImg(asjson2[1], img)
            a = asjson2[0]
            break

百度图片爬取代码基础

实现爬取百度图片的代码,首先需要安装一些关键库,比如requestsBeautifulSouprequests库负责发送HTTP请求并获取网页内容,而BeautifulSoup则用于解析网页并提取图片链接。这些库在Python编程中非常基础且常用,使用起来也比较简便。

然后配置请求的头部信息,这样做是为了模仿浏览器的访问行为。若不进行这一设置,服务器可能会判断出是爬虫在访问,从而拒绝提供数据或给出错误提示。通常需要设定诸如User-Agent等参数,使得程序看起来像是普通用户在操作。

基础代码和环境准备妥当后,需设置特定的搜索关键词。比如,若进行植物分类的AI项目,可将关键词设定为“常见花卉图片”。随后,代码将根据这些关键词在百度图片中搜索相应的图片。

代码执行后输出的图片链接列表,我们还能对其进行筛选和加工。比如,可以设定图片的清晰度要求,因为分辨率较低的图片可能不符合我们的项目要求。通过设定清晰度筛选标准,我们可以排除掉质量不高或不符合标准的图片链接,从而提升收集到的数据质量。

搜狗图片爬取特点

from urllib.parse import quote
import requests
 
# 填入需要搜索的内容

图片[1]-如何使用代码爬取百度和搜狗图片,助力人工智能与深度学习数据搜集-东山笔记

key_word = quote('阳台') # 通过定义page决定爬取多少页,每一页有48张图片 page=50 for page in range(1, page): startN=(page-1)*48 url = 'https://pic.sogou.com/napi/pc/searchList?mode=1&start={}&xml_len=48&query={}'.format(startN,key_word) response = requests.get(url) json_data = response.json() allData = json_data['data']['items'] img_urls=[] i = 0 for data in allData: url = data['thumbUrl'] img_urls.append(url) i=i+1 for num in range(i): data=requests.get(img_urls[num],timeout=5).content # 此处需要修改保存路径 with open('C:/Users/wbl/Desktop/AI/pc/L/'+'page'+str(page)+'-'+str(num)+'.jpg','wb')as file: file.write(data) print(num,'下载完成!!')

搜狗图片服务拥有自己独特的索引和分类机制,在特定领域展现出独有的优势。以动漫和游戏领域为例,这里的图片资源相当丰富。例如,动漫制作公司在收集动漫素材、塑造角色形象时,搜狗能够提供众多风格迥异的图片。

搜狗的图片搜索界面设计简单明了,便于爬虫软件精确找到并获取图片。在具体抓取时,减少了多余网页元素的干扰,从而提高了抓取的效率。

搜狗图片爬取代码框架

与百度图片抓取过程相似,我们同样需要安装相应的库。另外,由于搜狗图片页面的加载方式有异,有时我们会需要使用selenium库来模拟浏览器的动态加载。尤其是那些依赖JavaScript动态加载图片的网页,selenium能模仿用户操作,确保页面能够完全加载。

在使用搜狗图片搜索时,要留意参数的配置。该搜索服务有一套独特的规则和参数系统,涉及搜索结果的页数、图片种类等方面。只有正确调整这些参数,才能精确地找到所需的图片。以寻找特定动漫风格的图片为例,通过设置相应的参数,可以轻松筛选出风格独特的图片。

搜狗图片爬取应用场景

教育领域内,搜狗抓取的图片能够被用来编制教学材料。在学校,老师们在教授语文、美术等课时,可以借助搜狗搜索相关图片,比如讲解古诗词时搭配意境图。这种形象生动的教学辅助手段,有助于激发学生的兴趣,提升他们的理解能力。

在游戏开发过程中,美术设计师能够运用搜集到的图片来辅助角色塑造和场景布局。他们从多样化的游戏场景与角色形象中汲取创意,以此提升游戏开发的效率。

开发者可能会觉得,在百度和搜狗中,图片爬取的代码实现起来,百度的难度可能更高一些。若觉得这篇文章对你有帮助,不妨点个赞,并且转发给那些可能需要的朋友。


import requests
import re
def download_images(keyword, num):
    url =';word='+ keyword    
    html = requests.get(url).text    
    img_urls = re.findall('"objURL":"(.*?)",', html, re.S)    
    count = 0    
    for img_url in img_urls:        
        if count < num:            
            print('Downloading:', img_url)            
            try:                
                response = requests.get(img_url, timeout=10)                
                content = response.content                
                file_name ='./images/'+ str(count)+'.jpg'                
                with open(file_name,'wb') as f:                    
                    f.write(content)                
                    count += 1            
            except Exception as e:                
                print('Error:',e)
if __name__=='__main__':    
    download_images('美食', 10)

© 版权声明
THE END
喜欢就支持一下吧
分享