学写个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'
五、猛龙摆尾
技能描述:
猛龙摆尾:盲仔逆天转行,卖起了中药
算了算了,还是去看妹子图去!哎,不对不对,话说我好想是盲仔啊!而且我还是个和尚啊!
罪过罪过哦!
- 学写个Python爬虫都被这世界针对
- python爬虫xpath针对json代码的分析方法
- Python爬虫——针对某榴社区的图片爬取V0.1
- python 爬虫——针对query爬取百度百科页面
- python 针对selenium+phontomjs等模拟浏览器爬虫的反爬技术点
- python 世界
- python爬虫-->爬虫基础
- [爬虫] Python爬虫技巧
- Python爬虫
- python 爬虫
- python 爬虫
- python 爬虫
- python爬虫
- Python爬虫
- Python爬虫
- python 爬虫
- Python爬虫
- python爬虫
- gcc中的-Wl,rpath=<your_lib_dir>选项
- Java的比较接口 Comparable与Comparator
- C#动态执行函数:利用反射实现
- IORESOURCE_X 对应含义
- [HDU-5979] [Problem I]水题(16大连站)计算几何
- 学写个Python爬虫都被这世界针对
- 设计模式-抽象工厂模式
- iOS 之 UIControl 的 Block 响应方式
- How to use IO BAR in linux PCIe device driver
- Sicily 1198 Substring
- html标签里的onclick的时候总是报错:Uncaught ReferenceError: dosave is not defined(…)
- Hadoop2.7.1 集群环境搭建(虚拟机)
- 写出高转化率文案的三步骤
- [转]教你如何自己搭建vps,10M宽带用ss看youtube 1080p无压力!!