齐乐汇,秋色温凉,卡隆林地
其实解决办法很简单,加入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 requests import re import os from 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 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
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论