python:使用requests,bs4爬取mmjpg上的图片
这是我的第一个爬虫,选择爬这个网站是因为,他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上的图片相关推荐
- python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程
python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...
- Python的Requests来爬取今日头条的图片和文章
Python的Requests来爬取今日头条的图片和文章并且存入mongo config.py MONGO_HOST = 'localhost' MONGO_PORT = 27017 MONGO_DB ...
- python3 requests+bs4爬取某网页MM图片
python3 requests+bs4爬取某网页MM图片 原理: 将所要抓取的首页分标题及地址保存到字典,遍历字典,对每一个标题下的所有分页进行抓取 import requests from bs4 ...
- python采用requests+bs4爬取豆瓣top250电影信息
爬取豆瓣top250电影说明 (链接:https://movie.douban.com/top250,可爬取一页或者多页(输出电影的正标题(肖申克的救赎),副标题( The Shawshank Red ...
- Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(二)
文章目录 思路梳理 封装函数 重要提示 系列文章 思路梳理 我们打开网页,可以看到这其中有许多链接,我们可以查看一下网页源代码,可以看到如我们所期盼的一样,这里有许多的链接,我们只需要把链接爬取出来就 ...
- Python借助爬虫Requests+BS4爬取人民教育出版社义务教育下学期课本(一)
经过一晚上的休息,我已经重新从阴影中站了起来,并重新发现了一个人性化的网站,一起来看看这个网站吧 来到了人民教育出版社的官网,一看,顿时晕眩三秒,我昨天的努力不都白费了吗,只得重新打起精神,研究一下这 ...
- Python requests+bs4爬取中药数据库TCMSP的资源获得清肺排毒汤的靶向基因(曲线救国)
Python requests+bs4 爬取TCMSP的资源获得清肺排毒汤的靶向基因 为研究清肺排毒汤的中药材对于新冠肺炎的作用机制,需要收集相关数据,于是将目光洒向了TCMSP.. 检索首页是这样的 ...
- 【Python爬虫】从零开始爬取Sci-Hub上的论文(串行爬取)
[Python爬虫]从零开始爬取Sci-Hub上的论文(串行爬取) 维护日志 项目简介 步骤与实践 STEP1 获取目标内容的列表 STEP2 利用开发者工具进行网页调研 2.1 提取文章链接和分页链 ...
- python使用requests库爬取淘宝指定商品信息
python使用requests库爬取淘宝指定商品信息 在搜索栏中输入商品 通过F12开发者工具抓包我们知道了商品信息的API,同时发现了商品数据都以json字符串的形式存储在返回的html内 解析u ...
- python利用bs4爬取外国高清图片网站
python利用bs4爬取外国高清图片网站 爬取高清图片 爬取高清图片 import re import requests from bs4 import BeautifulSoup import o ...
最新文章
- 7 Papers Radios | NeurIPS 2020最佳论文;全卷积网络实现E2E目标检测
- 干货一:通过自定义PopupWindow实现QQ菜单选项功能
- vecm模型怎么写系数_用Stata搞实证之面板模型入门
- 任意阶魔方阵matlab程序,【精品】任意阶魔方阵算法(c语言)
- mysql 5.7 hint_新特性解读 | MySQL 8.0 新增 HINT 模式
- 专访徐勇州:腾讯云全球化布局势如破竹,构建全球24小时无差别服务︱大咖访谈录...
- 二维码_encode与decode
- 银行账户系统需求分析实例
- promoter:启动子预测程序(PPPs)软件现状及分析
- 均匀量化(Matlab)
- 酉矩阵和次酉矩阵的定义
- elas算法源码赏析(一):PGM格式图片的读取和保存
- mac谷歌浏览器怎么登陆账户_苹果电脑怎么安装谷歌浏览器_macbook如何下载安装谷歌浏览器-win7之家...
- 上学前夕-心里有种说不出的感觉-眼里酸酸的
- 实例:泰坦尼克号幸存者的预测
- 斯坦福2021秋季·实用机器学习【中文】【合集】+1.1课程介绍
- 数据分析师三个等级_数据分析课|这三个等级的数据分析师报考条件,一定是你需要的...
- 算法:求小于N的最大素数
- Search Help SE11
- 520谁才是你的真爱?