Python制作豆瓣图片的爬虫


Posted in Python onDecember 28, 2017

前段时间自学了一段时间的Python,想着浓一点项目来练练手。看着大佬们一说就是爬了100W+的数据就非常的羡慕,不过对于我这种初学者来说,也就爬一爬图片。

我相信很多人的第一个爬虫程序都是爬去贴吧的图片,嗯,我平时不玩贴吧,加上我觉得豆瓣挺良心的,我就爬了豆瓣首页上面的图片。其实最刚开始是想爬全站,后来一想我这简直是脑子犯抽,全站的图片爬下来得有多少,再说这个只是练一下手,所以就只爬取了首页上的图片。废话不多说 开始代码。

首先是主文件的代码:

import re
from html_downloder import HtmlDownloader
from html_downloder import Image

"'起始URL'"
url = "https://www.douban.com"
"'保存目录'"
image_path = "F:\source\Python\爬虫\ImageGet\Image%s.jpg"
"'定义实体类'"
downloader = HtmlDownloader()
html = downloader.download(url)
"'SaveFile(html, html_path)'"
html = html.decode('utf-8')
"'正则表达式'"
reg1 = r'="(https://img[\S]*?[jpg|png])"'
"'提取图片的URL'"
dbdata = re.findall(reg1, html)
imgsave = Image()

"'下载保存图片'"
imgsave.ImageGet(dbdata, image_path)

我们打开豆瓣首页然后看一下里面图片的url会发现

Python制作豆瓣图片的爬虫

Python制作豆瓣图片的爬虫

都是以“=”等号开头,后面接双引号,中间都是https://img,末尾以双引号结束。

因此我们的正则表达式可以写成 reg1 = r'="(https://img[\S]*?[jpg|png])"'

在这个表达式中"[]"中括号里面的东西会作为一个整体,其中[\S]表示大小写字母和数字,[jpg|png]表示以png结尾或者jpg结尾(在这次爬虫中并没有包括gif,因为打开gif的url发现是空白)。

然后是html_downloder.py的代码:

# file: html_downloader.py
 
 import urllib.request
 import urllib.error
 import time

 class HtmlDownloader(object):
  def download(self, url):
   if url is None:
    return None
   try:
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'}
    "'发出请求'"
    request = urllib.request.Request(url=url, headers=header)
    "'获取结果'"
    response = urllib.request.urlopen(url)
   except urllib.error.URLError as e:
    if hasattr(e, "code"):
     print(e.code)
    if hasattr(e, "reason"):
     print(e.reason)
   if response.getcode() != 200:
    return None
   html = response.read()
   response.close()
   return html

 class Image (object):
  def ImageGet(self, imageurl, image_path):
   x = 0
   for li in imageurl:
    urllib.request.urlretrieve(li, image_path % x)
    x = x + 1
    "'休眠5s以免给服务器造成严重负担'"
    time.sleep(5)
这个文件的代码主要是负责下载html网页和下载具体的图片。

接下来就可以在保存路径对应的文件夹中中看到下载的图片了

Python制作豆瓣图片的爬虫

至此,爬虫告一段落,离大佬的路还远得很,继续加油!!

Python 相关文章推荐
python 控制语句
Nov 03 Python
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
python socket多线程通讯实例分析(聊天室)
Apr 06 Python
python常用函数详解
Sep 13 Python
Python实现接受任意个数参数的函数方法
Apr 21 Python
numpy linalg模块的具体使用方法
May 26 Python
python元组的概念知识点
Nov 19 Python
Django中modelform组件实例用法总结
Feb 10 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
python 实现逻辑回归
Dec 30 Python
你喜欢篮球吗?Python实现篮球游戏
Jun 11 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 #Python
python编程实现12306的一个小爬虫实例
Dec 27 #Python
python导出chrome书签到markdown文件的实例代码
Dec 27 #Python
Python类的继承和多态代码详解
Dec 27 #Python
快速查询Python文档方法分享
Dec 27 #Python
Java及python正则表达式详解
Dec 27 #Python
python matplotlib画图实例代码分享
Dec 27 #Python
You might like
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
一个简单的PHP验证码实现代码
2014/05/10 PHP
php实现源代码加密的方法
2015/07/11 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
JS Range HTML文档/文字内容选中、库及应用介绍
2011/05/12 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
深入浅析Vue组件开发
2016/11/25 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
在vue里面设置全局变量或数据的方法
2018/03/09 Javascript
解决vue-cli + webpack 新建项目出错的问题
2018/03/20 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
[02:51]2014DOTA2国际邀请赛 IG战队官方纪录片
2014/07/21 DOTA
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
Django 实现下载文件功能的示例
2018/03/06 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
keras的三种模型实现与区别说明
2020/07/03 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
宿舍使用违章电器检讨书
2014/01/12 职场文书
招商专员岗位职责
2014/02/08 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server