python 爬虫获取图片(一):简单爬取

您所在的位置:网站首页 简单网页图片高清大图 python 爬虫获取图片(一):简单爬取

python 爬虫获取图片(一):简单爬取

2024-07-15 07:44| 来源: 网络整理| 查看: 265

以下代码大部分都是吸取b站UP主:大大的小番茄 经过自己的总结和理解,希望能帮助到大家,大家也可以看看老师的课 老师个人主页

开始

在这里插入图片描述 准备工作: 1)我们需要知道每张图片都是一个链接,我们则需要进行获取 2)我们需要对python进行伪装 举例

import requests url = 'https://www.douban.com/' response = requests.get(url) print(response)#返回结果为418,200为请求成功,418则是对方发现咱们是爬虫了

所以我们要对其进行伪装 3)找到网站图片的相似处(才能更好的进行爬取)(一般说ojbURL和URL)

正式开始

在这里插入图片描述这里我使用的是谷歌浏览器,大家可自行下载(或其他浏览器也行)

步骤: 1)右键检查 2)点击network(如没内容,再次刷新网站)(我们发送给网站的信息) 3)拖到第一开始处 4)在其中找到Cookie(可选)和User-Agent #Cookie为登录信息,User-Agent为浏览器信息等等 在这里插入图片描述

还有怎么找到图片的相似处呢

步骤: 1)右键查看源代码 2)CTRL+F 3)可通过查看图片的属性来进行查找(一般为objURL或URL) 在这里插入图片描述来进行查找

完整代码进行解析 import re,requests,time#导入所需要的库 headers = { "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Mobile Safari/537.36", "Cookie":"BAIDUID=229A18B7534A5CEA671381D45FCDC530:FG=1; BIDUPSID=229A18B7534A5CEA671381D45FCDC530; PSTM=1592693385; BDRCVFR[dG2JNJb_ajR]=mk3SLVN4HKm; userFrom=null; BDRCVFR[-pGxjrCMryR]=mk3SLVN4HKm; H_WISE_SIDS=149389_148867_148211_149537_146732_138426_150175_147527_145599_148186_147715_149253_150045_149280_145607_148660_146055_110085; delPer=0; BDORZ=AE84CDB3A529C0F8A2B9DCDD1D18B695; ysm=10315; IMG_WH=626_611; __bsi=8556698095607456048_00_14_R_R_17_0303_c02f_Y", } detail_urls = []#存储图片地址 for i in range(1,400,20):#20页一张 url = 'http://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=&st=-1&fm=result&fr=&sf=1&fmq=1592804203005_R&pv=&ic=&nc=1&z=&hd=&latest=©right=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1592804203008%5E00_1328X727&sid=&word=%E5%BE%B7%E9%B2%81%E7%BA%B3&pn={}'.format(i)#请求的地址 response = requests.get(url,headers,timeout = (3,7))#设置请求超时时间3-7秒 content = response.content.decode('utf-8')#使用utf-8进行解码 detail_url = re.findall('"objURL":"(.*?)"',content,re.DOTALL)#re.DOTALL忽略格式#匹配objURL的内容,大部分为objURL或URL detail_urls.append(detail_url)#将获取到的图片地址保存在之前定义的列表中 response = requests.get(url,headers=headers)#请求网站 content = response.content b = 0#图片第几张 for page in detail_urls: for url in page: try: print('获取到{}张图片'.format(i)) response = requests.get(url,headers = headers) content = response.content if url[-3:] == 'jpg': with open('保存的地址{}.jpg'.format(b),'wb') as f: f.write(content) elif url[-4:] == 'jpeg': with open('保存的地址{}.jpeg'.format(b),'wb') as f: f.write(content) elif url[-3:] == 'png': with open('保存的地址{}.pon'.format(b),'wb') as f: f.write(content) else: continue except: print('超时') b +=1 结果图

在这里插入图片描述知道代码还有许多问题,比如超时等~ 可以允许防火墙通过python什么的 或者网卡,代码也会再后面继续完善的

谢谢大家

在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3