手把手教你爬取清纯小姐姐私房照,小孩子别学,【后篇】

前篇:
传送门

在这里插入图片描述
在这里插入图片描述
因为写了前一篇爬虫博客,看来挺火的。哈哈,第一篇阅读量破万的的博客,还是的庆幸的。

因为火热程度比较高,直接就进入了python热榜第一了。
在这里插入图片描述
来来来,这一篇除了炫耀下成绩以外,还来一些干货。

有挺多小伙伴在后台问我,甚至加我问的问题就是:为什么我的程序报错了?诶,奇怪的是,他们报错都是同一个问题。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
好家伙,起码有几十个小伙子问过这个问题。具体问题是:
TypeError: cannot use a string pattern on a bytes-like object

哎呀,这是为什么呢?是不是博主夹带了干货没放出来呢?实属冤枉 啊。大概率是我用的是py2,你用的是py3

python2和python3之间切换,难免会碰到一些问题,python3中Unicode字符串是默认格式(就是str类型),ASCII编码的字符串(就是bytes类型,bytes类型是包含字节值,其实不算是字符串,python3还有bytearray字节数组类型)要在前面加操作符b或B;python2中则是相反的,ASCII编码字符串是默认,Unicode字符串要在前面加操作符u或U

那怎么解决呢?转换一下不就行了吗。

import chardet   #需要导入这个模块,检测编码格式
encode_type = chardet.detect(html)  
html = html.decode(encode_type['encoding']) #进行相应解码,赋给原标识符(变量)

完整代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import chardet
import re
import requests
import os


def dowmloadPic(html, keyword,i):
    encode_type = chardet.detect(html)  
    html = html.decode(encode_type['encoding']) #进行相应解码,赋给原标识符(变量)

    pic_url = re.findall('"objURL":"(.*?)",',html,re.S)
   
    abc=i*60
    print('找到关键词:' + keyword + '的图片,现在开始下载图片...')
    for each in pic_url:
        print('正在下载第' + str(abc) + '张图片,图片地址:' + str(each))
        try:
            pic = requests.get(each, timeout=10)
        except requests.exceptions.ConnectionError:
            print('【错误】当前图片无法下载')
            continue

        dir = r'D:\image\i' + keyword + '_' + str(abc) + '.jpg'
        if not os.path.exists('D:\image'):
            os.makedirs('D:\image')
        
.......完整源码,请关注公众号,后台回复领取


视频讲解传送门

更多干货内容,请移步到公众号:诗一样的代码

在这里插入图片描述

相关推荐
自《易学C++》出版上市以来受到了众多初学者和编程爱好者的广泛欢迎。其书写的思路和语言的风格受到了很多读者的肯定。 为了帮助读者更好地理解这本书作者特意编写了配套的电子案。生动的动画示例、有趣的课堂小测试、新鲜的学理念又在互联网上掀起了C++的热潮。《易学C++》的官方网站点击率节节攀升。 本电子案颠覆了传统计算机语言的学方法可供各院校师使用。相信使用了该电子案之后学生对C++的兴趣会大大增加。 由于第二章的PPT配有两段视频如有需要请到《易学C++》官方网站下载: http://www.tomatostudio.net.cn/ 写给老师的话 学习C++不仅仅是让学生学习一种计算机语言更是要让学生学会计算机的思维模式学会学习计算机语言的方法。授人以鱼不如授人以渔即使让学生通过死记硬背通过了高难度的考试依然无法使他们的水平有明显的提高。因此我建议老师应该将学的侧重点放在思维模式和学习方法上而不是仅仅关注语法细节。那些复杂的表达式(例如i++之后加上一堆东西)在平时并不使用况且在某些不同的编译器下 可能还有不同的结果。考试的时候可以减少涉及具体细节的内容没有人能保证在没有计算机的情况下直接用纸笔写出没有错误的程序。让学生知道基本概念知道应该用什么方法解决问题应该去找什么资料那就可以了。 版权声明 本幻灯片为《易学C++》作品的一部分其版权受到保护。如引用或部分引用本幻灯片中的内容应注明出处。 作者简介 潘嘉杰毕业于上海大学计算机工程与科学学院现就职于上海某研究院。曾荣获第三届“博创杯”全国大学生嵌入式设计竞赛二等奖并在2007年全国嵌入式系统设计师的认证考试中排名前50位。曾在上海市北郊高级中学任C++一年。大学二年级开始独立编写《易学C++》一书该书尚未出版前就受到网友的广泛好评。
DirectX修复工具(DirectX Repair)是一款系统级工具软件简便易用。本程序为绿色版无需安装可直接运行。 本程序的主要功能是检测当前系统的DirectX状态如果发现异常则进行修复。程序主要针对0xc000007b问题设计可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010)并且全部DX文件都有Microsoft的数字签名安全放心。 本程序为了应对一般电脑用户的使用采用了易用的一键式设计只要点击主界面上的“检测并修复”按钮程序就会自动完成校验、检测、下载、修复以及注册的全部功能无需用户的介入大大降低了使用难度。在常规修复过程中程序还会自动检测DirectX加速状态在异常时给予用户相应提示。 本程序适用于多个操作系统如Windows XP(需先安装.NET 2.0详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows 8.1、Windows 8.1 Update、Windows 10同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同自动调整任务模式无需用户进行设置。 本程序的V4.0版分为标准版、增强版以及在线修复版。所有版本都支持修复DirectX的功能而增强版则额外支持修复c++的功能。在线修复版功能与标准版相同但其所需的数据包需要在修复时自动下载。各个版本之间主程序完全相同只是其配套使用的数据包不同。因此标准版和在线修复版可以通过补全扩展包的形式成为增强版。本程序自V3.5版起自带扩展功能。只要在主界面的“工具”菜单下打开“选项”对话框找到“扩展”标签点击其中的“开始扩展”按钮即可。扩展过程需要Internet连接扩展成功后新的数据包可自动生效。扩展用时根据网络速度不同而不同最快仅需数秒最慢需要数分钟烦请耐心等待。如扩展失败可点击“扩展”界面左上角小锁图标切换为加密连接即可很大程度上避免因防火墙或其他原因导致的连接失败。 本程序自V2.0版起采用全新的底层程序架构使用了异步多线程编程技术使得检测、下载、修复单独进行互不干扰快速如飞。新程序更改了自我校验方式因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验因此程序安全性与之前版本相同并未降低。 程序有更新系统c++功能。由于绝大多数软件运行时需要c++的支持并且c++的异常也会导致0xc000007b错误因此程序在检测修复的同时也会根据需要更新系统中的c++组件。自V3.2版本开始使用了全新的c++扩展包可以大幅提高工业软件修复成功的概率。修复c++的功能仅限于增强版标准版及在线修复版在系统c++异常时(非丢失时)会提示用户使用增强版进行修复。除常规修复外新版程序还支持C++强力修复功能。当常规修复无效时可以到本程序的选项界面内开启强力修复功能可大幅提高修复成功率。请注意请仅在常规修复无效时再使用此功能。 程序有两种窗口样式。正常模式即默认样式适合绝大多数用户使用。另有一种简约模式此时窗口将只显示最基本的内容修复会自动进行修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速同时方便其他软件、游戏将本程序内嵌即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建)将其中的“FormStyle”一项的值改为“Simple”并保存即可。 新版程序支持命令行运行模式。在命令行中调用本程序可以在路径后直接添加命令进行相应的设置。常见的命令有7类分别是设置语言的命令、设置窗口模式的命令设置安全级别的命令、开启强力修复的命令、设置c++修复模式的命令、控制Direct加速的命令、显示版权信息的命令。具体命令名称可以通过“/help”或“/?”进行查询。 程序有高级筛选功能开启该功能后用户可以自主选择要修复的文件避免了其他不必要的修复工作。同时也支持通过文件进行辅助筛选只要在程序目录下建立“Filter.dat”文件其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能可以记录每一次检测修复结果方便在出现问题时及时分析和查找原因以便找到解决办法。 程序的“选项”对话框中包含了7项高级功能。点击"常规”选项卡可以调整程序的基本运行情况包括日志记录、安全级别控制、调试模式开启等。只有开启调试模式后才能在C
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页