经过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爬取图片成功之后不能打开的更多相关文章

  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. CMake入门-02-HelloWorld扩展

    工作环境 系统:macOS Mojave 10.14.6 CMake: Version 3.15.0-rc4 Hello,World! 扩展-同一目录,多个源文件 (1) 新建 hello 目录,创建 ...

  2. 敏捷开发--必备工具Jira&Confluence学习视频

    敏捷开发必备工具:Jira+confluence,完美组合. 入门培训视频,内含Jira, Confluence, BigGantt, Zephyr, Tempo, Question, ScriptR ...

  3. .NET Core下操作Git,自动提交代码到 GitHub

    .NET Core 3.0 预览版发布已经好些时日了,博客园也已将其用于生产环境中,可见 .NET Core 日趋成熟 回归正题,你想盖大楼吗?想 GitHub 首页一片绿吗?今天拿她玩玩自动化提交代 ...

  4. Linux运维记 - 重启网卡后,网络不通

    前言 不小心重启了线上服务器的网卡,结果整个网络不通了,就算使用127.0.0.1访问都不行,第一次遇到这种问题,当时就六神无主了,两个人排查了好久也没找到原因,万分火急.排查内核日志发现网卡状态不断 ...

  5. .net core 在 Docker 开发下的巨坑

    一,Docker 的安装 Windows 安装  Docker 官方文档: https://docs.microsoft.com/zh-cn/virtualization/windowscontain ...

  6. 内容协商在视图View上的应用【享学Spring MVC】

    每篇一句 人生很有意思:首先就得活得长.活得长才能够见自己,再长就可以见众生 前言 在经过 前两篇 文章了解了Spring MVC的内容协商机制之后,相信你已经能够熟练的运用Spring MVC提供的 ...

  7. UVA 10699 Count the factors 题解

    Time limit 3000 ms OS Linux Write a program, that computes the number of different prime factors in ...

  8. Gym 101510C

    题意略. 思路: 由于xi的选取是任意的,所以我们不用去理会题目中的xi数列条件.主要是把关注点放在长度为L的线段覆盖至少k个整数这个条件上. 像这种取到最小的合法解的问题,我们应该要想到使用二分法来 ...

  9. C# Memcache集群原理、客户端配置详细解析

    概述 memcache是一套开放源的分布式高速缓存系统.由服务端和客户端组成,以守护程序(监听)方式运行于一个或多个服务器中,随时会接收客户端的连接和操作.memcache主要把数据对象缓存到内存中, ...

  10. vmware设置centos静态ip

    之前有过设置ubuntu静态ip的经验,这次安装设置centos感觉很顺利很简单.参考https://www.linuxidc.com/Linux/2017-10/147449.htm,照做就可以了. ...