这是我的第一个爬虫,选择爬这个网站是因为,他URL特别有规律,不是因为他的图片,不是因为图片,不是。。。


首先他每套图的第一张地址如下
http://www.mmjpg.com/mm/1

图片的地址如下
http://img.mmjpg.com/2015/1/1.jpg

图片的地址的URL里面有年份,因为不知道那些图片是哪一年发的,所以不方便把所有的图片都爬下来

因此我从套图的地址中找到第一张图片的图片地址
然后将图片名每次加一,直到最后一张(可以从套图的地址中找到一共有多少张)

    # 得到一共有多少张图def get_img_sum_num(self, img_url):fa = fake_useragent.UserAgent()headers = {'User-Agent': fa.random,'Referer': 'http://www.mmjpg.com'}request = requests.get(img_url, headers=headers)soup = bs4.BeautifulSoup(request.content, 'lxml')# 获取标签里面的值img_sum_number = soup.find_all('a', href=re.compile('/mm'))[8].get_text().strip()print img_sum_numberimg_sum_number = int(img_sum_number)# print img_sum_numberreturn img_sum_number# 得到该套图中的所有图片的URLdef get_img_urls(self, url):fa = fake_useragent.UserAgent()headers = {'User-Agent': fa.random,'Referer': 'http://m.mmjpg.com'}request = requests.get(url, headers=headers)soup = bs4.BeautifulSoup(request.content, 'lxml')first_img_url = soup.find('img').get('src')     # 获取标签值url_split = first_img_url.split('/')img_urls = []for i in xrange(1, self.get_img_sum_num(url)+1):url_split[-1] = (str(i)+'.jpg')img_urls.append('/'.join(url_split))# print img_urlsreturn img_urls

根据图片的URL下载图片

    def down_pictures(self, img_urls):img_name = str(img_urls[0].split('/')[-2])+'-'+str(img_urls[0].split('/')[-3])if os.path.exists(img_name):    # 查重 如果这个文件夹存在则跳过 防止重复下载time.sleep(1)print img_name+'存在'returnos.mkdir(img_name)for img_url in img_urls:fa = fake_useragent.UserAgent()headers = {'User-Agent': fa.random,'Referer': 'http://m.mmjpg.com'}request = requests.get(img_url, headers=headers)with open(img_name + u'/' + img_url.split('/')[-1], 'wb') as f:f.write(request.content)    # contents返回的为二进制   text返回的为union类型f.close()print "已保存" + img_name + '/' + img_url.split('/')[-1]time.sleep(random.random()*2)

在爬的过程中遇到的问题:

1、被ban:更改header的User-Agent,伪装成浏览器浏览,如果还被ban可以使用代理,这个网站只需要伪装头再加上time.sleep()就可以解决了(我导入了fake_useragent,也可以自己造个轮子,我比较懒,直接用了别人的轮子)

2、下载下来的图片是同一张,全是防盗链图片这个问题我也找了好久,结果发现只要在头里加上’Referer’就可以了

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。——百度百科

全部代码:https://github.com/YoungChild/mmjpg_python

python:使用requests,bs4爬取mmjpg上的图片相关推荐

  1. python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程

    python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...

  2. Python的Requests来爬取今日头条的图片和文章

    Python的Requests来爬取今日头条的图片和文章并且存入mongo config.py MONGO_HOST = 'localhost' MONGO_PORT = 27017 MONGO_DB ...

  3. python3 requests+bs4爬取某网页MM图片

    python3 requests+bs4爬取某网页MM图片 原理: 将所要抓取的首页分标题及地址保存到字典,遍历字典,对每一个标题下的所有分页进行抓取 import requests from bs4 ...

  4. python采用requests+bs4爬取豆瓣top250电影信息

    爬取豆瓣top250电影说明 (链接:https://movie.douban.com/top250,可爬取一页或者多页(输出电影的正标题(肖申克的救赎),副标题( The Shawshank Red ...

  5. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(二)

    文章目录 思路梳理 封装函数 重要提示 系列文章 思路梳理 我们打开网页,可以看到这其中有许多链接,我们可以查看一下网页源代码,可以看到如我们所期盼的一样,这里有许多的链接,我们只需要把链接爬取出来就 ...

  6. Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(一)

    经过一晚上的休息,我已经重新从阴影中站了起来,并重新发现了一个人性化的网站,一起来看看这个网站吧 来到了人民教育出版社的官网,一看,顿时晕眩三秒,我昨天的努力不都白费了吗,只得重新打起精神,研究一下这 ...

  7. Python requests+bs4爬取中药数据库TCMSP的资源获得清肺排毒汤的靶向基因(曲线救国)

    Python requests+bs4 爬取TCMSP的资源获得清肺排毒汤的靶向基因 为研究清肺排毒汤的中药材对于新冠肺炎的作用机制,需要收集相关数据,于是将目光洒向了TCMSP.. 检索首页是这样的 ...

  8. 【Python爬虫】从零开始爬取Sci-Hub上的论文(串行爬取)

    [Python爬虫]从零开始爬取Sci-Hub上的论文(串行爬取) 维护日志 项目简介 步骤与实践 STEP1 获取目标内容的列表 STEP2 利用开发者工具进行网页调研 2.1 提取文章链接和分页链 ...

  9. python使用requests库爬取淘宝指定商品信息

    python使用requests库爬取淘宝指定商品信息 在搜索栏中输入商品 通过F12开发者工具抓包我们知道了商品信息的API,同时发现了商品数据都以json字符串的形式存储在返回的html内 解析u ...

  10. python利用bs4爬取外国高清图片网站

    python利用bs4爬取外国高清图片网站 爬取高清图片 爬取高清图片 import re import requests from bs4 import BeautifulSoup import o ...

最新文章

  1. 7 Papers Radios | NeurIPS 2020最佳论文;全卷积网络实现E2E目标检测
  2. 干货一:通过自定义PopupWindow实现QQ菜单选项功能
  3. vecm模型怎么写系数_用Stata搞实证之面板模型入门
  4. 任意阶魔方阵matlab程序,【精品】任意阶魔方阵算法(c语言)
  5. mysql 5.7 hint_新特性解读 | MySQL 8.0 新增 HINT 模式
  6. 专访徐勇州:腾讯云全球化布局势如破竹,构建全球24小时无差别服务︱大咖访谈录...
  7. 二维码_encode与decode
  8. 银行账户系统需求分析实例
  9. promoter:启动子预测程序(PPPs)软件现状及分析
  10. 均匀量化(Matlab)
  11. 酉矩阵和次酉矩阵的定义
  12. elas算法源码赏析(一):PGM格式图片的读取和保存
  13. mac谷歌浏览器怎么登陆账户_苹果电脑怎么安装谷歌浏览器_macbook如何下载安装谷歌浏览器-win7之家...
  14. 上学前夕-心里有种说不出的感觉-眼里酸酸的
  15. 实例:泰坦尼克号幸存者的预测
  16. 斯坦福2021秋季·实用机器学习【中文】【合集】+1.1课程介绍
  17. 数据分析师三个等级_数据分析课|这三个等级的数据分析师报考条件,一定是你需要的...
  18. 算法:求小于N的最大素数
  19. Search Help SE11
  20. 520谁才是你的真爱?

热门文章

  1. mac苹果电脑安装非app store软件无法安装的解决办法
  2. 浏览器提示:你的连接不是专用连接的解决方法
  3. 表格table转pdf分页不连续解决
  4. mysql sjis 校对乱码_MySQL乱码问题深层分析
  5. 本程序是三菱FX3U PLC编写的铝材过秤包装平台
  6. china-pub近期免费赠书活动大汇总
  7. java+spring+vue基于ssm的员工公寓后勤管理系统
  8. Linux 内核和 Windows 内核有什么区别?
  9. 《基于多支持向量机综合的电力系统暂态稳定评估》总结
  10. 【Android 10 源码】深入理解 MediaCodec configure