学写个Python爬虫都被这世界针对

来源:互联网 发布:程序员 app 编辑:程序博客网 时间:2024/06/10 00:35

之前转了一篇Python爬虫的文章《Python3 实现妹子图爬虫》,这样的技能很诱人啊!

想一想瞬间就能获取一万点能量,怒气爆满,摸眼,回旋,转身,“一库”!

一、疾风骤雨----被动

技能描述:每次释放技能(跳槽)后,攻击速度(工资)提升40%,持续4秒(2年)

好了,有想法了就开始干!

百度一下,‘ Python 爬虫 ’,网上的例子那可是相当的多的,随便找了一个然后照着代码敲下来(新手刚学)

import urllibimport redef getHtml(url):        page = urllib.urlopen(url)    html = page.read()    return htmldef getImg(html):    reg = r'src="(.+?\.png)"'    imgre = re.compile(reg)    imglist = re.findall(imgre,html)    x = 0    for url in imglist:        urllib.urlretrieve(url, '%s.png' % x)        x += 1    return imglisthtml = getHtml("http://blog.csdn.net/bloodymandoo/article/details/72822856")print(html)print(getImg(html))

二、天音波/回音击

技能描述:
天音波:盲仔发出刺耳的声波查找定位八阿哥
回音击:冲向八阿哥,对八阿哥造成物理伤害
照猫画虎谁不会啊?
迫不及待的点击运行,duang
AttributeError: module 'urllib' has no attribute 'urlopen'
报错了!
还好有位善良可爱的美女指导我,“你这代码写的是Python2,你用的却是Python3,肯定报错啊!”。
她还亲切的指导了我如何改正!无以言报,我只能在心底默默的说句,“谢谢了!度娘!”。
于是,代码就变成了这样:
import urllib.requestimport redef getHtml(url):        page = urllib.request.urlopen(url)    html = page.read()    return htmldef getImg(html):    reg = r'src="(.+?\.png)"'    imgre = re.compile(reg)    imglist = re.findall(imgre,html)    x = 0    for url in imglist:        urllib.request.urlretrieve(url, '%s.png' % x)        x += 1    return imglisthtml = getHtml("http://blog.csdn.net/bloodymandoo/article/details/72822856")print(html)print(getImg(html))

我用双手,成就你的梦想。

啪,啪,啪啪啪啪啪啪啪啪.....

又出错了:

urllib.error.HTTPError: HTTP Error 403: Forbidden

伤害一点点的累积,还好我出的肉!

突然,前面出现一个高大的身影,如同一面盾牌一般坚实,原来是我们村村长啊!名字叫“不聋”,但他不喜欢这个名字,

人们都说他的知识储量如深谷一般,看不到底,所以都送上称号 “谷哥”!

谷哥并没有对这样的小问题表示不屑,只是给我解释这样出错的原因:

如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信息,而缺失这些信息的请求往往都是非正常的访问,例如爬虫。
有些网站为了防止这种非正常的访问,会验证请求信息中的UserAgent(它的信息包括硬件平台、系统软件、应用软件和用户个人偏好),如果UserAgent存在异常或者是不存在,那么这次请求将会被拒绝(如上错误信息所示)。

当我还想让学长教我怎么解决时,谷哥学长突然看起来有点生气了,摆了一句“找你度娘去!”

一下子莫名奇妙。

还是度娘好,问题很快得到了解决。


三、金钟罩/铁布衫

技能描述:
金钟罩:盲仔开启代理保护自己
铁布衫:盲仔高强度的加班工作让他激发潜能,获得工资加层
度娘那温婉的声音犹在耳旁回荡,不知谁这么不解风趣,居然.....

“不对还是出错了,你看”,

import urllib.requestimport redef getHtml(url):    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}    req = urllib.request.Request(url=url, headers=headers)    page = urllib.request.urlopen(req)    html = page.read()    return htmldef getImg(html):    reg = r'src="(.+?\.png)"'    imgre = re.compile(reg)    imglist = re.findall(imgre,html)    x = 0    for url in imglist:        urllib.request.urlretrieve(url, '%s.png' % x)        x += 1    return imglisthtml = getHtml("http://blog.csdn.net/bloodymandoo/article/details/72822856")print(html)print(getImg(html))

TypeError: cannot use a string pattern on a bytes-like object

“没事没事小问题,加一句就行了”,度娘自信的说到。

import urllib.requestimport redef getHtml(url):    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}    req = urllib.request.Request(url=url, headers=headers)    page = urllib.request.urlopen(req)    html = page.read()    return htmldef getImg(html):    reg = r'src="(.+?\.png)"'    imgre = re.compile(reg)    html = html.decode('utf-8')    imglist = re.findall(imgre,html)    x = 0    for url in imglist:        urllib.request.urlretrieve(url, '%s.png' % x)        x += 1    return imglisthtml = getHtml("http://blog.csdn.net/bloodymandoo/article/details/72822856")print(html)print(getImg(html))

“为什么啊?”

“额,...”,度娘支支吾吾说了半天,当我快要沉醉其美妙的声音中的时候,突然听到一句,“这种问题问你谷哥”,然后就再也没搭理我了。


四、天雷破/摧筋断骨

技能描述:
天雷破:盲仔猛击电脑,释放冲击波,清除灰尘
摧筋断骨:盲仔再次猛击电脑,隔山打牛,解决卡顿问题
先运行看看,啪,没出错!

OK,搞定!

换个页面试一试,换种图片格式试一试,

import urllib.requestimport redef getHtml(url):    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}    req = urllib.request.Request(url=url, headers=headers)    page = urllib.request.urlopen(req)    html = page.read()    return htmldef getImg(html):    reg = r'src="(.+?\.jpg)"'    imgre = re.compile(reg)    html = html.decode('utf-8')    imglist = re.findall(imgre,html)    x = 0    for url in imglist:        urllib.request.urlretrieve(url, '%s.jpg' % x)        x += 1    return imglisthtml = getHtml("http://blog.csdn.net/bloodymandoo/article/details/72822856")print(html)print(getImg(html))

将图片格式png改为jpg,居然就出错了;

urllib.error.HTTPError: HTTP Error 400: Bad Request

还是相似的错,按输入和输出相对应来说,问题应该出在图片上,看报的错分析,问题应该出在url上,

于是试着打印一下图片的src,得到的结果是:

'http://static.blog.csdn.net/images/category_icon.jpg', 

'http://static.blog.csdn.net/images/arrow_triangle _down.jpg',

 'http://static.blog.csdn.net/images/arrow_triangle_up.jpg',

 'http://avatar.csdn.net/F/C/D/1_bloodymandoo.jpg'

这一下子就长了见识,原来这里面居然多了一个空格,去掉空格就无法访问到图片,只有将空格转义了,但是一部小心就把“:”也给转了。

哎,还不如换个网站。

突然有点想度娘了,去她主页偷一张她的照片去,走起。

结果,没偷着,她居然也把她的头像做了点小处理,把头都给剪掉了,

'//www.baidu.com/img/bd_logo1.png'


五、猛龙摆尾

技能描述:
猛龙摆尾:盲仔逆天转行,卖起了中药
算了算了,还是去看妹子图去!

哎,不对不对,话说我好想是盲仔啊!而且我还是个和尚啊!

罪过罪过哦!


原创粉丝点击