捣鼓了三小时,有一些小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('斗图内容关键字:'))

测试成功

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

  1. py3+requests+urllib+bs4+threading,爬取斗图图片

    实现原理及思路请参考我的另外几篇爬虫实践博客 py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图:http://www.cnblogs.com/UncleYong/p/6892688. ...

  2. python+tkinter+动画图片+爬虫(查询天气)的GUI图形界面设计

    1.完整代码: import time import urllib.request #发送网络请求,获取数据 import gzip #压缩和解压缩模块 import json #解析获得的数据 fr ...

  3. 【Python】:简单爬虫作业

    使用Python编写的图片爬虫作业: #coding=utf-8 import urllib import re def getPage(url): #urllib.urlopen(url[, dat ...

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

    python多线程爬虫项目() 爬取目标:斗图啦(起始url:http://www.doutula.com/photo/list/?page=1) 爬取内容:斗图啦全网图片 使用工具:requests ...

  5. python爬虫我是斗图之王

    python爬虫我是斗图之王 本文会以斗图啦网站为例,爬取所有表情包. 阅读之前需要对线程池.连接池.正则表达式稍作了解. 分析网站 页面url分析 打开斗图啦网站,简单翻阅之后发现最新表情每页包含的 ...

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

    斗图啦表情包多线程爬取-写在前面 今天在CSDN博客,发现好多人写爬虫都在爬取一个叫做斗图啦的网站,里面很多表情包,然后瞅了瞅,各种实现方式都有,今天我给你实现一个多线程版本的.关键技术点 aioht ...

  7. 【Python爬虫实战】 图片爬虫-淘宝图片爬虫--千图网图片爬虫

    所谓图片爬虫,就是从互联网中自动把对方服务器上的图片爬下来的爬虫程序.有些图片是直接在html文件里面,有些是隐藏在JS文件中,在html文件中只需要我们分析源码就能得到如果是隐藏在JS文件中,那么就 ...

  8. python 爬虫系列09-异步斗图来一波

    斗图斗图,妈妈再也不怕我都不赢了 import requests from lxml import etree from urllib import request import os import ...

  9. python多线程爬取斗图啦数据

    python多线程爬取斗图啦网的表情数据 使用到的技术点 requests请求库 re 正则表达式 pyquery解析库,python实现的jquery threading 线程 queue 队列 ' ...

随机推荐

  1. java里如何实现循环打印出字符或字符数组里的内容

    不多说,直接上干货! java里如何实现循环打印出字符里的内容 没写,暂时不会 java里如何实现循环打印出字符数组里的内容 public class test { public static voi ...

  2. (三)Redis两种持久化方案

    Redis的持久化策略:2种 RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘.RDB是Redis默认采用的持久化方 ...

  3. DNS安全浅议、域名A记录(ANAME),MX记录,CNAME记录 专题

    首先要做的就是配置域名的MX 记录啦: 先添加一条A记录: mail.abc.com 指向 你的服务器IP! 然后添加域名的MX 记录,指向mail.abc.com A 记录( 即域名MX 记录的值为 ...

  4. 框架使用-Sql拼接

     Sql语句拼写: 查询 DQueryDom DmoQuery(返回的整个对象) 更新 DQUpdateDom 删除 DQDeleteDom 条件 dom.Where.Conditions.Add(D ...

  5. mysql通用分页存储过程遇到的问题

    DELIMITER $$ USE `tsb_asksys`$$ DROP PROCEDURE IF EXISTS `P_viewPage`$$ CREATE DEFINER=`root`@`local ...

  6. 《Head First 设计模式》之装饰者模式——饮料加工

    装饰者模式(Decorator) ——动态地将责任附加到对象上.若要扩展功能,装饰者提供了比继承更有弹性的替代方案. 特点:建立拥有共同超类的装饰者与被装饰者来实现功能的动态扩展 原则:对扩展开放,对 ...

  7. java 基础 04 循环结构 一维数组

    内容: (1)循环结构 (2)一维数组 1.循环结构 1.1for循环 (1)语法格式 for(初始化表达式1;条件表达式2;修改初始化表达式3){ 循环体; } (2)执行流程 执行初始化表达式 = ...

  8. Django的Serializers的使用

    Serializer 在这里通过一个验证用户身份的例子说明rest_framework中serializer.Serialize的使用. 编写serializer Serializer的使用不需要依赖 ...

  9. <Android 应用 之路> 天气预报(四)

    前言 第二次尝试完成天气预报应用,与上次不同的是,个人感觉这次的Ui不那么丑陋,整体的实用性和界面效果,用户体验相较上一次有所提升,但是还是有很多地方需要完善. 这次使用到的内容比较丰富,包括聚合数据 ...

  10. Google地址

    Google的访问一直很不稳定,经常被墙,无意间发现以下一些地址,特此记录. https://g.ttlsa.com/ https://wen.lu/ http://sinaapp.co https: ...