urllib2爬取图片成功之后不能打开
经过8个小时的摸索,终于决定写下此随笔!
初学爬虫,准备爬取百度美女吧的图片,爬取图片之后发现打不开,上代码:
- import urllib
- import urllib2
- from lxml import etree
- def loadPage(url):
- """
- 作用:根据url发送请求,获取响应文件
- url:需要爬取的url地址
- """
- print('正在下载' )
- ua_headers = {
- "User-Agent": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- }
- request = urllib2.Request(url, headers= ua_headers)
- html = urllib2.urlopen(request).read()
- # print html
- content = etree.HTML(html)
- link_list = content.xpath('//div[@class="t_con cleafix"]/div[2]/div[1]/div[1]/a/@href')
- for link in link_list:
- fulurl = 'http://tieba.baidu.com' + link
- loadImage(fulurl)
- def loadImage(url):
- print '正在下载图片'
- ua_headers = {
- "User-Agent": "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)"
- }
- request = urllib2.Request(url, headers=ua_headers)
- html = urllib2.urlopen(request).read()
- content = etree.HTML(html)
- link_list = content.xpath('//img[@class="BDE_Image"]/@src')
- for link in link_list:
- print(link)
- writeImage(link)
- def writeImage(url):
- """
- 作用:将HTML内容写入到本地
- html:服务器响应文件内容
- """
- ua_headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) \
- AppleWebKit/537.36 (KHTML, like Gecko) \
- Chrome/35.0.1916.114 Safari/537.36',
- 'Cookie': 'AspxAutoDetectCookieSupport=1'
- }
- request = urllib2.Request(url,headers = ua_headers)
- response =urllib2.urlopen(request)
- image = response.read()
- filename = url[-10:]
- print('正在保存' + filename)
- # print image
- with open(filename, "wb") as f:
- f.write(image)
- print(filename + '已保存')
- def tiebaSpider(url, beginPage, endPage):
- """
- 作用:贴吧爬虫调度器。负责组合处理每个页面的url
- url:贴吧url的前部分
- beginPage:起始页
- endPage:结束页
- """
- for page in range(beginPage, endPage + 1):
- pn = (page - 1) * 50
- fulurl = url + "&pn=" + str(pn)
- loadPage(fulurl)
- print('谢谢使用!')
- if __name__ == '__main__':
- kw = raw_input('请输入需要爬取的贴吧名:')
- beginPage = int(raw_input('请输入起始页:'))
- endPage = int(raw_input('请输入结束页:'))
- url = 'http://tieba.baidu.com/f?'
- key = urllib.urlencode({"kw": kw})
- fulurl = url + key
- tiebaSpider(fulurl,beginPage,endPage)
后来发现是writeImage()的参数跟函数体中调用的参数不一致导致的,
- def writeImage(link):
- """
- 作用:将HTML内容写入到本地
- html:服务器响应文件内容
- """
- ua_headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) \
- AppleWebKit/537.36 (KHTML, like Gecko) \
- Chrome/35.0.1916.114 Safari/537.36',
- 'Cookie': 'AspxAutoDetectCookieSupport=1'
- }
- request = urllib2.Request(url,headers = ua_headers)
- response =urllib2.urlopen(request)
- image = response.read()
- filename = url[-10:]
- print('正在保存' + filename)
- # print image
- with open(filename, "wb") as f:
- f.write(image)
- print(filename + '已保存')
将参数改成跟函数体内一致后,爬取的图片总算可以正常查看了!下面看看成果吧:
urllib2爬取图片成功之后不能打开的更多相关文章
- [python爬虫] 爬取图片无法打开或已损坏的简单探讨
本文主要针对python使用urlretrieve或urlopen下载百度.搜狗.googto(谷歌镜像)等图片时,出现"无法打开图片或已损坏"的问题,作者对它进行简单的探讨.同时 ...
- Python 爬虫 爬取图片入门
爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 用户看到的网页实质是由 HTML 代码构成的,爬 ...
- C# 爬取图片
网络收集整理 爬取图片 引用AngleSharp NuGet 包 using AngleSharp; using System; using System.Collections.Generic; ...
- Java jsoup爬取图片
jsoup爬取百度瀑布流图片 是的,Java也可以做网络爬虫,不仅可以爬静态网页的图片,也可以爬动态网页的图片,比如采用Ajax技术进行异步加载的百度瀑布流. 以前有写过用Java进行百度图片的抓取, ...
- scrapy爬虫,爬取图片
一.scrapy的安装: 本文基于Anacoda3, Anacoda2和3如何同时安装? 将Anacoda3安装在C:\ProgramData\Anaconda2\envs文件夹中即可. 如何用con ...
- 孤荷凌寒自学python第八十二天学习爬取图片2
孤荷凌寒自学python第八十二天学习爬取图片2 (完整学习过程屏幕记录视频地址在文末) 今天在昨天基本尝试成功的基础上,继续完善了文字和图片的同时爬取并存放在word文档中. 一.我准备爬取一个有文 ...
- python网络爬虫之使用scrapy爬取图片
在前面的章节中都介绍了scrapy如何爬取网页数据,今天介绍下如何爬取图片. 下载图片需要用到ImagesPipeline这个类,首先介绍下工作流程: 1 首先需要在一个爬虫中,获取到图片的url并存 ...
- 使用Scrapy爬取图片入库,并保存在本地
使用Scrapy爬取图片入库,并保存在本地 上 篇博客已经简单的介绍了爬取数据流程,现在让我们继续学习scrapy 目标: 爬取爱卡汽车标题,价格以及图片存入数据库,并存图到本地 好了不多说,让我们实 ...
- scrapy 爬取图片
scrapy 爬取图片 1.scrapy 有下载图片的自带接口,不用我们在去实现 setting.py设置 # 保存log信息的文件名 LOG_LEVEL = "INFO" # L ...
随机推荐
- Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol
Multiple dex files define Lokhttp3/internal/wsWebSocketProtocol 老套路,先晒图 图一:如题,在编译打包时遇到了如上错误,很明显这是一个依 ...
- Mysql优化-mysql分区
背景:由于我负责i西科教务处系统,i西科用户量达到20000人左右,那么假设每人每星期10门讲课,数据库记录信息将是20万条,如果不将课程表进行分区或分表,就会造成爆表的情况,如此看来,分区是必须要做 ...
- 自己实现spring核心功能 一
聊聊spring spring对于java开发者来说,是最熟悉不过的框架了,我们日常开发中每天都在使用它.它有着各种各样的好处,简单易用,得心应手... ... 我们一说到spring就会讲到ioc ...
- 如何使用Python连接ldap
如何使用Python连接ldap 好多使用ldap认证的软件都是Python的,比如superset和airflow, 好吧,他们都是airbnb家的.在配置ldap的时候可能会出现认证失败,你不知道 ...
- laravel为模型中所有查询统一添加WHERE条件
在使用laravel开发web系统的过程,需要在model处为该模型统一添加一个条件或者多个条件,研究了一个laravel的模型类,发现model中有个方法是构建查询的,方法如下: /** * Reg ...
- DRF (Django REST framework) 中的视图类
视图说明 1. 两个基类 1)APIView rest_framework.views.APIView APIView是REST framework提供的所有视图的基类,继承自Django的View父 ...
- bootstrap-datetimepicker时间插件使用
html头部引入相关的js和css <link rel="stylesheet" type="text/css" href="css/boots ...
- js 分享一个 时钟效果
<style> *{ margin: 0; padding: 0; } #outLine{ ...
- 【转】python爬虫之腾讯视频vip下载
本文转自如下:作者:jia666666 原文:https://blog.csdn.net/jia666666/article/details/82466553 版权声明:本文为博主原创文章,转载请附上 ...
- Ribbon实现客户端负载均衡
什么是Ribbon? 客户端负载均衡组件. 前期准备: 搭建一个Eureka集群和一个注册服务 https://www.cnblogs.com/noneplus/p/11374883.html 创建服 ...