经过8个小时的摸索,终于决定写下此随笔!

初学爬虫,准备爬取百度美女吧的图片,爬取图片之后发现打不开,上代码:

  1. import urllib
  2. import urllib2
  3. from lxml import etree
  4.  
  5. def loadPage(url):
  6. """
  7. 作用:根据url发送请求,获取响应文件
  8. url:需要爬取的url地址
  9. """
  10.  
  11. print('正在下载' )
  12. ua_headers = {
  13. "User-Agent": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
  14. }
  15. request = urllib2.Request(url, headers= ua_headers)
  16. html = urllib2.urlopen(request).read()
  17. # print html
  18. content = etree.HTML(html)
  19. link_list = content.xpath('//div[@class="t_con cleafix"]/div[2]/div[1]/div[1]/a/@href')
  20. for link in link_list:
  21. fulurl = 'http://tieba.baidu.com' + link
  22. loadImage(fulurl)
  23.  
  24. def loadImage(url):
  25. print '正在下载图片'
  26. ua_headers = {
  27. "User-Agent": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
  28. }
  29. request = urllib2.Request(url, headers=ua_headers)
  30. html = urllib2.urlopen(request).read()
  31. content = etree.HTML(html)
  32. link_list = content.xpath('//img[@class="BDE_Image"]/@src')
  33. for link in link_list:
  34. print(link)
  35. writeImage(link)
  36. def writeImage(url):
  37. """
  38. 作用:将HTML内容写入到本地
  39. html:服务器响应文件内容
  40. """
  41. ua_headers = {
  42. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) \
  43. AppleWebKit/537.36 (KHTML, like Gecko) \
  44. Chrome/35.0.1916.114 Safari/537.36',
  45. 'Cookie': 'AspxAutoDetectCookieSupport=1'
  46. }
  47. request = urllib2.Request(url,headers = ua_headers)
  48. response =urllib2.urlopen(request)
  49. image = response.read()
  50. filename = url[-10:]
  51. print('正在保存' + filename)
  52. # print image
  53. with open(filename, "wb") as f:
  54. f.write(image)
  55. print(filename + '已保存')
  56.  
  57. def tiebaSpider(url, beginPage, endPage):
  58. """
  59.  
  60. 作用:贴吧爬虫调度器。负责组合处理每个页面的url
  61. url:贴吧url的前部分
  62. beginPage:起始页
  63. endPage:结束页
  64. """
  65.  
  66. for page in range(beginPage, endPage + 1):
  67. pn = (page - 1) * 50
  68. fulurl = url + "&pn=" + str(pn)
  69. loadPage(fulurl)
  70. print('谢谢使用!')
  71.  
  72. if __name__ == '__main__':
  73. kw = raw_input('请输入需要爬取的贴吧名:')
  74. beginPage = int(raw_input('请输入起始页:'))
  75. endPage = int(raw_input('请输入结束页:'))
  76.  
  77. url = 'http://tieba.baidu.com/f?'
  78. key = urllib.urlencode({"kw": kw})
  79. fulurl = url + key
  80. tiebaSpider(fulurl,beginPage,endPage)

后来发现是writeImage()的参数跟函数体中调用的参数不一致导致的,

  1. def writeImage(link):
  2. """
  3. 作用:将HTML内容写入到本地
  4. html:服务器响应文件内容
  5. """
  6. ua_headers = {
  7. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) \
  8. AppleWebKit/537.36 (KHTML, like Gecko) \
  9. Chrome/35.0.1916.114 Safari/537.36',
  10. 'Cookie': 'AspxAutoDetectCookieSupport=1'
  11. }
  12. request = urllib2.Request(url,headers = ua_headers)
  13. response =urllib2.urlopen(request)
  14. image = response.read()
  15. filename = url[-10:]
  16. print('正在保存' + filename)
  17. # print image
  18. with open(filename, "wb") as f:
  19. f.write(image)
  20. print(filename + '已保存')

将参数改成跟函数体内一致后,爬取的图片总算可以正常查看了!下面看看成果吧:

urllib2爬取图片成功之后不能打开的更多相关文章

  1. [python爬虫] 爬取图片无法打开或已损坏的简单探讨

    本文主要针对python使用urlretrieve或urlopen下载百度.搜狗.googto(谷歌镜像)等图片时,出现"无法打开图片或已损坏"的问题,作者对它进行简单的探讨.同时 ...

  2. Python 爬虫 爬取图片入门

    爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 用户看到的网页实质是由 HTML 代码构成的,爬 ...

  3. C# 爬取图片

    网络收集整理  爬取图片 引用AngleSharp  NuGet 包 using AngleSharp; using System; using System.Collections.Generic; ...

  4. Java jsoup爬取图片

    jsoup爬取百度瀑布流图片 是的,Java也可以做网络爬虫,不仅可以爬静态网页的图片,也可以爬动态网页的图片,比如采用Ajax技术进行异步加载的百度瀑布流. 以前有写过用Java进行百度图片的抓取, ...

  5. scrapy爬虫,爬取图片

    一.scrapy的安装: 本文基于Anacoda3, Anacoda2和3如何同时安装? 将Anacoda3安装在C:\ProgramData\Anaconda2\envs文件夹中即可. 如何用con ...

  6. 孤荷凌寒自学python第八十二天学习爬取图片2

    孤荷凌寒自学python第八十二天学习爬取图片2 (完整学习过程屏幕记录视频地址在文末) 今天在昨天基本尝试成功的基础上,继续完善了文字和图片的同时爬取并存放在word文档中. 一.我准备爬取一个有文 ...

  7. python网络爬虫之使用scrapy爬取图片

    在前面的章节中都介绍了scrapy如何爬取网页数据,今天介绍下如何爬取图片. 下载图片需要用到ImagesPipeline这个类,首先介绍下工作流程: 1 首先需要在一个爬虫中,获取到图片的url并存 ...

  8. 使用Scrapy爬取图片入库,并保存在本地

    使用Scrapy爬取图片入库,并保存在本地 上 篇博客已经简单的介绍了爬取数据流程,现在让我们继续学习scrapy 目标: 爬取爱卡汽车标题,价格以及图片存入数据库,并存图到本地 好了不多说,让我们实 ...

  9. scrapy 爬取图片

    scrapy 爬取图片 1.scrapy 有下载图片的自带接口,不用我们在去实现 setting.py设置 # 保存log信息的文件名 LOG_LEVEL = "INFO" # L ...

随机推荐

  1. Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol

    Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol 老套路,先晒图 图一:如题,在编译打包时遇到了如上错误,很明显这是一个依 ...

  2. Mysql优化-mysql分区

    背景:由于我负责i西科教务处系统,i西科用户量达到20000人左右,那么假设每人每星期10门讲课,数据库记录信息将是20万条,如果不将课程表进行分区或分表,就会造成爆表的情况,如此看来,分区是必须要做 ...

  3. 自己实现spring核心功能 一

    聊聊spring spring对于java开发者来说,是最熟悉不过的框架了,我们日常开发中每天都在使用它.它有着各种各样的好处,简单易用,得心应手... ... 我们一说到spring就会讲到ioc ...

  4. 如何使用Python连接ldap

    如何使用Python连接ldap 好多使用ldap认证的软件都是Python的,比如superset和airflow, 好吧,他们都是airbnb家的.在配置ldap的时候可能会出现认证失败,你不知道 ...

  5. laravel为模型中所有查询统一添加WHERE条件

    在使用laravel开发web系统的过程,需要在model处为该模型统一添加一个条件或者多个条件,研究了一个laravel的模型类,发现model中有个方法是构建查询的,方法如下: /** * Reg ...

  6. DRF (Django REST framework) 中的视图类

    视图说明 1. 两个基类 1)APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父 ...

  7. bootstrap-datetimepicker时间插件使用

    html头部引入相关的js和css <link rel="stylesheet" type="text/css" href="css/boots ...

  8. js 分享一个 时钟效果

    <style>        *{            margin: 0;            padding: 0;        }        #outLine{       ...

  9. 【转】python爬虫之腾讯视频vip下载

    本文转自如下:作者:jia666666 原文:https://blog.csdn.net/jia666666/article/details/82466553 版权声明:本文为博主原创文章,转载请附上 ...

  10. Ribbon实现客户端负载均衡

    什么是Ribbon? 客户端负载均衡组件. 前期准备: 搭建一个Eureka集群和一个注册服务 https://www.cnblogs.com/noneplus/p/11374883.html 创建服 ...