鱼C论坛

 找回密码
 立即注册
查看: 2091|回复: 4

[已解决]爬捧腹网爬的图片不会动

[复制链接]
发表于 2017-6-24 22:28:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

  1. import urllib.request
  2. import re



  3. def page(pg):  #网页
  4.     url = 'https://www.pengfu.com/index_%s.html'%pg
  5.     req = urllib.request.Request(url)
  6.     req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36')
  7.     html = urllib.request.urlopen(req).read().decode('utf-8')
  8.     #print(html)
  9.     return html


  10. def title(html):   #标题
  11.     reg = re.compile(r'<h1 class="dp-b"><a href=".*?" target="_blank">(.*?)</a>')
  12.     item = re.findall(reg,html)
  13.     #for i in item:
  14.         #print(i)
  15.                      
  16.     return item


  17. def content(html):   # 图片
  18.     reg = re.compile(r'<img src="(.*?)" width=')
  19.     item = re.findall(reg,html)
  20.     return item




  21. def mm():           #主函数
  22.     for i in range(20,25):
  23.         html = page(i)
  24.         title_list = title(html)
  25.         content_list = content(html)
  26.         for k,z in zip(title_list,content_list):
  27.             
  28.             print(k,z)
  29.             path = 'D:\PYPY,,\捧腹\%s.gif'%(k)
  30.             urllib.request.urlretrieve(z,path)


  31. if __name__ =='__main__':
  32.     mm()
  33.         
复制代码
最佳答案
2017-6-24 23:06:14
你看你代码打印出来的图片地址,全都是jpg png结尾的,这些不是动图的后缀,最后保存下来,虽然你强制把后缀改为了gif,但其本身并不是动图,所以就不会动了

不过奇怪的是,用这种方法写出来的代码看上去是没问题的,但抓取到的html文件中图片地址好像并不太对,真实的地址是这个
搜狗截图20170624230239.jpg
但抓取到的却是这个
搜狗截图20170624225418.jpg
不知道是不是网站对爬虫有什么限制,或者是什么其他因素导致了这个问题的出现

现在我还没找到比较好的方法解决,暂时只能想到一个暴力方法
仔细比对这两个地址,除了后缀名不同外,中间还有一个thumb替换为了origin,那么我在程序中把这两个地方改掉就能正常下载动图了
  1. def mm():  # 主函数
  2.     for i in range(1, 3):
  3.         html = page(i)
  4.         title_list = title(html)
  5.         content_list = content(html)
  6.         for k, z in zip(title_list, content_list):
  7.             print(k, z)
  8.             try:
  9.                 z = z.replace("thumb", "origin")
  10.                 z = z.replace(".jpg", ".gif")
  11.                 path = 'D:\PY\捧腹\%s.gif' % (k)
  12.                 urllib.request.urlretrieve(z, path)
  13.             except:
  14.                 pass
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-6-24 22:34:13 | 显示全部楼层
要复制的人改一下保存的的路径(41)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-24 23:06:14 | 显示全部楼层    本楼为最佳答案   
你看你代码打印出来的图片地址,全都是jpg png结尾的,这些不是动图的后缀,最后保存下来,虽然你强制把后缀改为了gif,但其本身并不是动图,所以就不会动了

不过奇怪的是,用这种方法写出来的代码看上去是没问题的,但抓取到的html文件中图片地址好像并不太对,真实的地址是这个
搜狗截图20170624230239.jpg
但抓取到的却是这个
搜狗截图20170624225418.jpg
不知道是不是网站对爬虫有什么限制,或者是什么其他因素导致了这个问题的出现

现在我还没找到比较好的方法解决,暂时只能想到一个暴力方法
仔细比对这两个地址,除了后缀名不同外,中间还有一个thumb替换为了origin,那么我在程序中把这两个地方改掉就能正常下载动图了
  1. def mm():  # 主函数
  2.     for i in range(1, 3):
  3.         html = page(i)
  4.         title_list = title(html)
  5.         content_list = content(html)
  6.         for k, z in zip(title_list, content_list):
  7.             print(k, z)
  8.             try:
  9.                 z = z.replace("thumb", "origin")
  10.                 z = z.replace(".jpg", ".gif")
  11.                 path = 'D:\PY\捧腹\%s.gif' % (k)
  12.                 urllib.request.urlretrieve(z, path)
  13.             except:
  14.                 pass
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-25 13:34:56 | 显示全部楼层
shuofxz 发表于 2017-6-24 23:06
你看你代码打印出来的图片地址,全都是jpg png结尾的,这些不是动图的后缀,最后保存下来,虽然你强制把后 ...

看了下,下载的地址确实不一样。你帮我修改的代码第10行的转换不要,不然只能抓到动图,静图抓不到。
还有就是我发现有些图片 和标题不一致,不知道有没有解决方案。
谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-25 16:18:57 | 显示全部楼层
慎为 发表于 2017-6-25 13:34
看了下,下载的地址确实不一样。你帮我修改的代码第10行的转换不要,不然只能抓到动图,静图抓不到。
还 ...

搜狗截图20170625161559.jpg
href部分的链接,可以把相应的图片网页打开,那么你可以尝试在这个网址上抓取 [标题] 和 [图片地址]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-23 23:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表