首页 > 编程知识 正文

爬虫获取网页片,python爬取搜狗美女片教程

时间:2023-05-04 08:03:57 阅读:249226 作者:122

防盗链原理 http标准协议中有专门的字段记录referer 一来可以追溯上一个入站地址是什么 二来对于资源文件,可以跟踪到包含显示他的网页地址是什么 因此所有防盗链方法都是基于这个Referer字段   so:很多网站使用防盗链的方法来设置反爬虫机制,设置这种机制后通过图片路由直接访问会返回403错误,

其实解决办法很简单,加入header,然后把Referer写入即可!

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 'Referer': url }

本文爬取https://www.mn52.com/网站上面的清纯美女图片,代码如下;

# 需要的库import requestsimport reimport osfrom multiprocessing import Pool# 主函数def get_img(url): # 设置图片存储路径 path = './mn52/' if not os.path.exists(path): os.mkdir(path) # 请求头,因为图片路由有防盗链设置所以在headers中添加'Referer': url headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36', 'Referer': url } try: # 请求主页面路由 response = requests.get(url=url,headers=headers) # print(response.text) # 正则提取并遍历获取分页面 res_paging = re.findall('<div class="picbox">.*?<a rel="external nofollow" href="(.*?)"',response.text,re.S) for i in res_paging: # 拼接分页面路由 url_infos = 'https://www.mn52.com' + i # 请求分页面路由 res_details = requests.get(url=url_infos,headers=headers) # 遍历获取图片路由 res_detail = re.findall('<div class="img-wrap">.*?<img .*?rel="(.*?)"/>',res_details.text,re.S) for i in res_detail: # 拼接图片路由 img_urls = 'https:'+i # 给图片命名 filename = i.split('/')[-1] # 判断图片是否已下载 if os.path.exists(path+str(filename)): print('图片已存在') else: # 请求图片连接 res = requests.get(url=img_urls,headers=headers) # 保存图片 with open(path+str(filename),'wb') as f: f.write(res.content) # 打印下载信息 print('正在下载:'+img_urls) except Exception as e: print(e)# 程序入口if __name__ == '__main__': # 构造完整路由 urls = ['https://www.mn52.com/meihuoxiezhen/list_2_{}.html'.format(i) for i in range(1,94)] # 开启多进程 pool = Pool() # 启动程序 pool.map(get_img,urls) print('抓取完成')

图片比较多,需要一些时间下载,控制台显示的下载过程

打开文件查看图片是否下载成功

 

done

私有云产品更新Prometheus-第一部分-docker安装步骤历史中提交的图片或压缩文件

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。