python 斗图图片爬虫

捣鼓了三小时,有一些小Bug,望大佬指导

废话不说,直接上代码:

#!/usr/bin/python3
# -*- coding:UTF-8 -*-
import os,re,requests
from urllib import request,parse

class Doutu_api(object):
    def __init__(self):
        self.api_html = r‘http://www.doutula.com/search?keyword=%s‘
        self.headers = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 ‘
                                      ‘(KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36‘}
        self.path = os.path.dirname(os.path.realpath(__file__))+‘\\temp‘

    def make_path(self,path=‘‘):#返回假为已创建,否则创建新文件夹
        self.path = self.path+‘\\‘+path
        if os.path.exists(self.path):  # 判断文件夹是否存在
            return False
        else:
            os.mkdir(self.path)  # 创建文件夹
            return True

    def get_img_html(self,html):
        self.make_path(path=html)
        html = self.api_html%parse.quote(html)
        pattern = re.compile(u‘<a.*?class="col-xs-6 col-md-2".*?href="(.*?)".*?style="padding:5px;">.*?</a>‘,re.S)
        pattern_img = re.compile(u‘<td>.*?<img.*?src="(.*?)".*?alt="(.*?)".*?onerror=".*?">.*?</td>‘,re.S)
        try:
            req = request.Request(html, headers=self.headers)
            imgs = request.urlopen(req)
            imgs = imgs.read().decode(‘utf-8‘)
            imgs = re.findall(pattern, imgs)
            for img in imgs:
                req = request.Request(img, headers=self.headers)
                imgurl = request.urlopen(req).read().decode(‘utf-8‘)
                imgurl =re.findall(pattern_img, imgurl)
                with open(self.path+‘\\{}.png‘.format(imgurl[0][1].replace(‘/‘,‘-‘)), ‘wb‘) as file:
                    response = requests.get(imgurl[0][0]).content  # 下载图片
                    file.write(response)  # 读取图片
            print(‘已完成下载,图片地址:‘,self.path)
        except Exception as e:
            print(e)
        return None

doutu = Doutu_api()
doutu.get_img_html(input(‘斗图内容关键字:‘))

测试成功

原文地址:https://www.cnblogs.com/canmeng/p/9180046.html

时间: 2024-08-08 12:40:27

python 斗图图片爬虫的相关文章

python写个图片爬虫

[[email protected] pythonscript]# vim getimg.py #!/usr/bin/python #encoding:utf8 import requests,sys,re #定义一个方法,获取网站图片,并下载 def getimg(url): #请求url内容 page=requests.get(url) #获取内容 pagetext=page.content #定义正则表达式. reg=r'src=.*?\.jpg' #对获取的内容进行匹配 imglist=

python实现简单图片爬虫并保存

先po代码 #coding=utf-8 import urllib.request #3之前的版本直接用urllib即可,下同 #该模块提供了web页面读取数据的接口,使得我们可以像读取本地文件一样读取www或者ftp上的数据 import re import os def getHtml(url): page = urllib.request.urlopen(url); html = page.read(); return html; def getImg(html): imglist = r

【Python】:简单爬虫作业

使用Python编写的图片爬虫作业: 1 #coding=utf-8 2 3 import urllib 4 import re 5 6 def getPage(url): 7 #urllib.urlopen(url[, data[, proxies]]) : 8 #创建一个表示远程url的类文件对象, 9 #然后像本地文件一样操作这个类文件对象来获取远程数据 10 page = urllib.urlopen(url) 11 return page.read() 12 13 def downlo

python多线程爬虫+批量下载斗图啦图片项目(关注、持续更新)

python多线程爬虫项目() 爬取目标:斗图啦(起始url:http://www.doutula.com/photo/list/?page=1) 爬取内容:斗图啦全网图片 使用工具:requests库实现发送请求.获取响应. xpath实现数据解析.提取和清洗 threading模块实现多线程爬虫 爬取结果: 思路:由于该爬虫存在网络密集IO和磁盘密集IO,存在大量等待时间,遂采用多线程方式爬取. 设计:本文采用多为结构化代码的面向对象封装设计思路,使用生产消费者模型,完成多线程的调度.爬取.

Python爬虫入门教程 13-100 斗图啦表情包多线程爬取

写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的.关键技术点 aiohttp ,你可以看一下我前面的文章,然后在学习一下. 网站就不分析了,无非就是找到规律,拼接URL,匹配关键点,然后爬取. 撸代码 首先快速的导入我们需要的模块,和其他文章不同,我把相同的表情都放在了同一个文件夹下面,所以需要导入os模块 import asyncio import aiohttp from lxml imp

spider_爬取斗图啦所有表情包(图片保存)

"""爬取斗图吧里面的所有表情包 知识点总结: 一.使用requests库进行爬取,随机请求头(网站反爬措施少.挂个请求头足矣) 二.具体思路: 1.先爬取所有的图片url,放在列表里 2.循环遍历url请求这些图片, 3.将图片进行分类保存三.分类保存用到一个知识点,endwith(以***结尾) 使用这个函数,将jpg,gif,png等不同类型的图片分开四.演示案例中,只爬取了前20页.五.各个定义的数字变量意思为: n=1 网页页数 num=1 保存图片数 注:该案例主

深夜,我用python爬取了整个斗图网站,不服来斗

深夜,我用python爬取了整个斗图网站,不服来斗 QQ.微信斗图总是斗不过,索性直接来爬斗图网,我有整个网站的图,不服来斗. 废话不多说,选取的网站为斗图啦,我们先简单来看一下网站的结构 网页信息 从上面这张图我们可以看出,一页有多套图,这个时候我们就要想怎么把每一套图分开存放(后边具体解释) 通过分析,所有信息在页面中都可以拿到,我们就不考虑异步加载,那么要考虑的就是分页问题了,通过点击不同的页面,很容易看清楚分页规则 很容易明白分页URL的构造,图片链接都在源码中,就不做具体说明了明白了这

python实现图片爬虫

#encoding:utf-8 import sys reload(sys) sys.setdefaultencoding('utf8') from sgmllib import SGMLParser import re import urllib class URLLister(SGMLParser): def start_a(self, attrs): url = [v for k, v in attrs if k=='href'] if url : urll = url[0] else :

python写的百度图片爬虫

学了一下python正则表达式,写一个百度图片爬虫玩玩. 当技术遇上心术不正的人,就成我这样的2B青年了. python3.6开发,在Windows下需要安装vc2015动态库.下载地址:http://www.cr173.com/soft/146014.html 1 #/usr/bin/env python 2 #Guoyabin 3 #-*- coding:utf-8 -*- 4 import re,os 5 import requests 6 7 keyword=input('请输入搜索关键