鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: starryzwh

爬虫爬取妹子图遇到的困难

[复制链接]
发表于 2016-6-12 20:25:03 | 显示全部楼层
shuofxz 发表于 2016-2-14 23:02
和你遇到一样的问题,应该是煎蛋网禁止爬虫了
用这个网站 www.chunmm.com是可以爬的
代码给 ...

这报错,用的是你发的代码[囧]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-30 20:39:16 | 显示全部楼层
应该是煎蛋网屏蔽了,我只能爬22张图片就挂了。鱼友有其他办法吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-6-30 20:48:40 | 显示全部楼层

已解决。原因是获取图片地址时,用了a = html.find('img src=')此查找条件,将'script><!-- niuza -->\r\n\t\t\t\t<script>\r\nvar str=new Array("1.jpg'这个图片地址也查找了出来,然而这个并不是图片地址,故而文件存储出错。所以建议a = html.find('img src="http://ww'),缩小一下查找范围。可破。

另外一个帖子的鱼油提供的方法,OK的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-7 20:19:22 | 显示全部楼层
zxszx4 发表于 2015-12-23 17:10
首先你的代码能运行,但我的报错和你的不一样,我的报错信息如下

其次,你的报错我看了,是因为字符串 ...

我也是这个错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-7 20:22:04 | 显示全部楼层
  1. OSError: [Errno 22] Invalid argument: 'script><!-- 6-niuza -->\r\n            <script>\r\nvar str=new Array("1.jpg'
复制代码

这是我的报错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-12 11:12:06 | 显示全部楼层

抱歉,我很久不上论坛了,那个代码也是初学的时候写的,我找不到了。后来我改进了一些,我把我之后的代码给你吧,这个问题好像是有几个正则匹配有问题。
  1. import urllib.request
  2. import os

  3. def url_open(url):
  4.    
  5.     req = urllib.request.Request(url)
  6.    
  7.     req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 5.1; rv:43.0) Gecko/20100101 Firefox/43.0')
  8.    
  9.    
  10.     response = urllib.request.urlopen(req)
  11.     html = response.read()

  12.     return html

  13. def get_page(url):
  14.     html = url_open(url).decode('utf-8')
  15.     a = html.find('current-comment-page') + 23
  16.     b = html.find(']', a)
  17.     url_pic=html[a:b]
  18.     return url_pic
  19. def find_imgs(url):
  20.     html = url_open(url).decode('utf-8')
  21.     img_addrs = []
  22.     a = html.find('查看原图')
  23.     while a != -1:
  24.         b = html.find('"', a+27)
  25.         if b != -1:
  26.             pic_url="http:"+html[a+25:b]
  27.             c=pic_url.find(".gif")
  28.             if c != -1 :
  29.                 pic_url=pic_url.replace("thumb180","large")
  30.             img_addrs.append(pic_url)
  31.         a = html.find('查看原图', b)

  32.     return img_addrs
  33.         
  34. def save_imgs(folder, img_addrs):
  35.     for each in img_addrs:
  36.         filename = each.split('/')[-1]
  37.         ##print("正在保存"+filename)
  38.         with open(filename, 'wb') as f:
  39.             img = url_open(each)
  40.             f.write(img)

  41. def download_mm(pages=10):
  42.     folder="/sdcard/Download/cs/"
  43.     os.chdir(folder)
  44.     url = 'http://jandan.net/ooxx/'
  45.     page_num = int(get_page(url))
  46.     pages=int(pages)
  47.     for i in range(pages):
  48.         page_num -= i
  49.         page_url = url + 'page-' + str(page_num) + '#comments'
  50.         img_addrs = find_imgs(page_url)
  51.         save_imgs(folder, img_addrs)


  52. if __name__ == '__main__':
  53.     numbers=input("下载几页的呀?")
  54.     download_mm(numbers)
复制代码

因为之前在手机上运行,关于路径那块你自己修改下,有问题自己改改吧。好像100页之后的网页代码有点改变,所以只能搞的页数少一点的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-12 11:14:21 | 显示全部楼层
zxszx4 发表于 2017-1-12 11:12
抱歉,我很久不上论坛了,那个代码也是初学的时候写的,我找不到了。后来我改进了一些,我把我之后的代码 ...

谢谢你哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-12 11:16:20 | 显示全部楼层

你这24小时在线呀?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-12 15:52:25 | 显示全部楼层
不够通用,以后遇到别的结构的网站,还得改代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-12 15:54:51 | 显示全部楼层
shuofxz 发表于 2016-2-14 23:02
和你遇到一样的问题,应该是煎蛋网禁止爬虫了
用这个网站 www.chunmm.com是可以爬的
代码给 ...

if b != 1:
        img_addrs.append(html[a+22:b+4])


这里应该是b!=-1吧?如果有就返回索引号,没有就返回-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-12 15:56:01 | 显示全部楼层
slaynzane 发表于 2016-2-14 22:34
我的也是这个错误,代码检查了好几遍。

IP被封掉了,只能找代理IP,这个很难,要不是这一条,网络上蜘蛛都爬满了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-12 15:56:44 | 显示全部楼层
starryzwh 发表于 2015-12-24 12:04
import urllib.request
import os
import random

img = url_open(each)

这一行,有可能失败,IP问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-13 10:40:50 | 显示全部楼层
cc9200 发表于 2017-1-12 15:52
不够通用,以后遇到别的结构的网站,还得改代码

是的,没错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-13 23:03:03 | 显示全部楼层
本帖最后由 kindy 于 2017-1-13 23:05 编辑
  1. http://ww1.sinaimg.cn/mw600/6cca1403jw1fbhuzwvwgvj20gf0gfjrv.jpg
  2. http://ww3.sinaimg.cn/mw600/6cca1403jw1fbkhpg08o9j20gb0fxdge.jpg
  3. http:"//cdn.jandan.net/static/gg/niuza/"+a+"" border="0" /></a>");

  4. </script><!-- 6-niuza -->

  5.             <script>

  6. var str=new Array("1.jpg
  7. http://cdn.jandan.net/static/gg/dji5.png" border="0" height="145" width="145"></a><!-- 3-DJI-->

  8.             <a href="//api.jandan.net/money.php?redirect_id=144" target="_blank"><img src="http://s.jandan.com/static/gg/fixate.jpg
  9. http:http://s.jandan.com/static/gg/bling.jpg
  10. Traceback (most recent call last):
  11.   File "D:\Program Files\python_workspace\download_mm.py", line 71, in <module>
  12.     download_mm()
  13.   File "D:\Program Files\python_workspace\download_mm.py", line 67, in download_mm
  14.     save_imgs(folder, img_addrs)
  15.   File "D:\Program Files\python_workspace\download_mm.py", line 49, in save_imgs
  16.     for each in img_addrs:
  17. TypeError: 'NoneType' object is not iterable
复制代码


我的把这个爬出来就报错了。这问怎么解决呢? 是因为煎蛋网已经加入了 防爬虫的代码吗?
我在这里卡了三个小时了。没找到解决的办法。所以能不能回答一下呢?
感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-13 23:06:47 | 显示全部楼层
kindy 发表于 2017-1-13 23:03
我的把这个爬出来就报错了。这问怎么解决呢? 是因为煎蛋网已经加入了 防爬虫的代码吗?
我在这里卡了 ...

就是爬到 这里就报错了
  1. http:"//cdn.jandan.net/static/gg/niuza/"+a+"" border="0" /></a>");

  2. </script><!-- 6-niuza -->

  3. &#160; &#160;&#160; &#160;&#160; &#160;&#160; &#160;<script>

  4. var str=new Array("1.jp
复制代码


为什么呢? 请教一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-6 05:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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