快使用Ctrl+D收藏本站!如果本站的文章以及资源有帮助到您,希望您能赞助本站服务器费用,感谢您的支持!本站开放注册,现邀请您一起分享技术心得!您可以-注册-

Python3.6爬虫入门练手小项目之一:使用爬虫爬取糗事百科网站图片项目

Python爬虫 Julius_wen 1330℃ 0评论

1.步骤解析

这个小项目的目的是让大家学会如何爬取网站上的图片,下面是简单介绍。

实现步骤如下:

  • 1.首先要写最简单的代码,确定能通过url访问糗百
  • 2.将糗百服务器返回的数据进行解码,得到完整HTML代码
  • 3.查看糗百HTML代码,进行正则匹配操作,爬取用户发布的图片

上面就是我们本次小项目案例的实现流程,下面我们将进行实验。

2.逐步实现

1.使用urlopen编写最简单的访问代码

运行结果如下,报错:

2.添加异常捕获代码

呀!!报错了,最简单的代码访问不了,出现错误异常情况……这里我们优化一下,添加异常捕获代码吧,别直接崩溃。咱们添加上次上次说到的URLError和HTTPError试试吧……

运行试一下:发现还是直接出错崩溃。。。。。仔细看一下崩溃原因:

http.client.RemoteDisconnected: Remote end closed connection without response

哦,明白了。原来这不是url链接访问出错,而是http.client下爆出的异常错误,继续修改一下:

再运行一下,就可以OK了;

打印出来的错误是,远程计算机没有响应,链接结束。。也就是说我们链接失败了……

3.添加header,假装成浏览器

上面最简单的爬虫代码出现错误,错误原因是:Remote end closed connection without response。。也就是服务器不理我……我的可爱小爬虫去招惹他,它对我不理睬……很伤心啊,为啥呢?一般情况下这是header请求头的原因,服务器接到我写的小爬虫的访问请求了,但是并没有任何关于header的信息,服务器感觉这小子可能有鬼,不是个好东西,还是不回复为妙。。。于是乎,它就拒绝了响应。要解决这个问题,就需要在请求头中添加header信息。把我们的小爬虫伪装一下,打扮成浏览器的模样。(小小爬虫,乔装打扮一下,变成假浏览器,让服务器的门卫放行小爬虫)

好的,改写完成之后,我们继续运行:

哈哈,成功访问了,并且得到服务器返回的数据了。。。呀,还是不对??这返回的啥玩意东西?不是HTML代码呀,这咋回事?且慢且慢,让我们打开360浏览器,开发者工具抓一下数据包。

  • 1.打开360浏览器的开发者工具
  • 2.点击network菜单
  • 3.此时左侧为空,然后刷新url栏目重新链接
  • 4.找到一开始的那个,也就糗百主域
  • 5.点击进去,查看response响应的信息。

这下明白了,原来返回的数据是使用了gzip进行压缩了,我们要想获取HTML页码,还要进行解压缩操作。下面升级我们的代码:

这里咱们已经明确了糗百使用的是gzip压缩算法,可以直接只使用gzip进行解压缩。但是这里考虑到大家可能以后抓的网站属于老网站,,老网站一般使用的是古老的deflate压缩算法,现在很少人用了。关于gzip的知识,大家

运行一下打印结果如下:

这里距离我们想要的HTML代码数据,格式按网页格式输出,还需要加一些转码:

也就是加入: print(content.decode(encoding=’utf-8′, errors=’strict’))将其转换成utf-8格式的数据,这样输出的就是HTML文件了。至此,我们的小爬虫终于历经千辛万苦,爬到了糗百的HTML代码数据。

3.爬取一个页面的图片代码

下面哥要进行正则解析了,坑了我好久啊啊啊嗯啊啊啊

我们要抓图片,这里需要看网页的html源码,找到用户发的图片信息。<img src=”//pic.qiushibaike.com/system/pictures/12067/120676262/medium/app120676262.jpeg”这个就是图片链接,下面我们要用python解析出这个图片链接,妈的正则表达式太不好用了(我用的还不熟……)

这里将爬取的图片保存到了硬盘上,首先判断硬盘是否已经存在文件夹,如果存在,则直接写入图片数据。如果不存在,则进行自动创建文件夹操作。爬取结果如下:

4.本篇小结

大家可以升一下级,写抓任意页面的图片。本章,咱们一步一步爬取了糗百的图片。虽然上面东西大家可能看着比较简单,实际上,我在同步编写的代码的时候,遇到了好几个坑爹的地方。下一篇我们将要称热打铁,将继续爬取糗百的段子,作者,评论数,点赞数等等。

转载请注明:燕骏博客 » Python3.6爬虫入门练手小项目之一:使用爬虫爬取糗事百科网站图片项目

赞赏作者

微信赞赏支付宝赞赏

喜欢 (4)or分享 (0)

如果您喜欢本站文章,感觉本站的资源对您有帮助,请狠狠点击下面

每累计赞助40元,即可让本站按最低配置运行一个月,感谢您的支持!

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址