鱼C论坛

 找回密码
 立即注册
查看: 17438|回复: 18

Python的56课最后,小甲鱼用代理爬虫图片为什么不出相关图片?

[复制链接]
发表于 2015-12-4 16:07:32 | 显示全部楼层 |阅读模式

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

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

x
看完56课之后,小甲鱼在57也没解答啊。。。为什么用了代理之后,得到的图片就不对呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-15 17:19:41 | 显示全部楼层
因为小甲鱼老师用的是网上共享的免费代理,别人的资源免费给你用自然也有限制,这个无关图片就是其一,本来是出现在用代理浏览的网页当中的,被爬虫爬到就是一个一个单独的文件了,不懂的欢迎继续追问.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2015-12-20 11:43:21 | 显示全部楼层
hldh214 发表于 2015-12-15 17:19
因为小甲鱼老师用的是网上共享的免费代理,别人的资源免费给你用自然也有限制,这个无关图片就是其一,本来是 ...

还是不太明白,你的意思是说代理的网页中本身就有无关的图片是吗?那不是就是说用不用IP登陆同一个网站显示的图片会不一样?这是为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-20 11:55:26 | 显示全部楼层
zhang77595103 发表于 2015-12-20 11:43
还是不太明白,你的意思是说代理的网页中本身就有无关的图片是吗?那不是就是说用不用IP登陆同一个网站显 ...

不是,不用代理访问网页和用代理访问网页是不一样的,后者传输的数据会经过代理服务器转发到我们客户端,而这个转发的过程中就可以设置给你看一些无关的图片,这种做法多出现在免费代理服务器上面,一般是赚广告费来维护服务器的运营
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2015-12-20 12:06:03 | 显示全部楼层
hldh214 发表于 2015-12-20 11:55
不是,不用代理访问网页和用代理访问网页是不一样的,后者传输的数据会经过代理服务器转发到我们客户端,而 ...

明白了。大神啊,感觉你对网络方面了解很透彻。

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
hldh214 + 1 + 1 共同进步~~

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-6 01:30:13 | 显示全部楼层
~风介~ 发表于 2015-12-6 23:55
如果是爬煎蛋网的那个例子的话 —— 煎蛋网已经禁用爬虫了~

还能禁用?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-6 01:30:47 | 显示全部楼层
hldh214 发表于 2015-12-15 17:19
因为小甲鱼老师用的是网上共享的免费代理,别人的资源免费给你用自然也有限制,这个无关图片就是其一,本来是 ...

谢谢你大神!球加QQ
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-15 10:02:03 | 显示全部楼层
~风介~ 发表于 2015-12-6 23:55
如果是爬煎蛋网的那个例子的话 —— 煎蛋网已经禁用爬虫了~

剪蛋网可以爬啊,我刚刚试了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-15 10:02:43 | 显示全部楼层
~风介~ 发表于 2015-12-6 23:55
如果是爬煎蛋网的那个例子的话 —— 煎蛋网已经禁用爬虫了~

剪蛋网可以爬啊,我刚刚试了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-8 11:59:02 | 显示全部楼层
我爬不了
  1. import urllib.request
  2. import os
  3. import random
  4. # 煎蛋网已经禁用爬虫了,所以此程序无法运行
  5. def url_open(url):
  6.     req = urllib.request.Request(url)
  7.     req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36')
  8.     # iplist = ['111.197.141.57:9797','116.228.236.219:8080','120.26.51.101:8118','113.222.80.216:3128','117.90.1.88:9000']
  9.     # proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})
  10.     # opener = urllib.request.build_opener(proxy_support)
  11.     # urllib.request.install_opener(opener)
  12.     response = urllib.request.urlopen(url)
  13.     html = response.read()
  14.     return html

  15. def get_page(url):
  16.     html = url_open(url).decode('utf-8')
  17.     a = html.find('current-comment-page') + 23
  18.     b = html.find(']',a)
  19.     return html[a:b]

  20. def find_imgs(url):
  21.     html = url_open(url).decode('utf-8')
  22.     img_addrs = []
  23.     a = html.find('img src=')
  24.     while a != -1:
  25.         b = html.find('.jpg', a, a + 100)

  26.         if b != -1:
  27.             img_addrs.append(html[a+9:b+4])
  28.             print('图片地址:'+html[a+9:b+4])
  29.         else:
  30.             b = a + 9
  31.         a = html.find('img src=', b)
  32.     return img_addrs
  33. def save_imgs(folder, img_addrs):
  34.     for each in img_addrs:
  35.         filename = each.split('/')[-1]
  36.         with open(filename, 'wb') as f:
  37.             img = url_open(each)
  38.             f.write(img)

  39. def download_mm(folder = 'Xman', pages = 1):
  40.     os.mkdir(folder)
  41.     os.chdir(folder)
  42.     url = "http://jandan.net/ooxx/"
  43.     page_num = int(get_page(url))
  44.     for i in range(pages):
  45.         page_num -= i
  46.         page_url = url + 'page-' + str(page_num) + '#comments'
  47.         img_addrs = find_imgs(page_url)
  48.         save_imgs(folder, img_addrs)
  49. if __name__ == '__main__':
  50.     download_mm()
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-8 14:55:45 | 显示全部楼层

第40行改为img = url_open("http:"+each)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-16 17:00:45 | 显示全部楼层
该问题是否有解决方案?使用代理后,如何去掉代理服务器传给我们的图片?难道要手动处理?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2017-4-24 15:55:14 | 显示全部楼层
~风介~ 发表于 2015-12-6 23:55
如果是爬煎蛋网的那个例子的话 —— 煎蛋网已经禁用爬虫了~

不对吧,我今天还能用呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-24 15:57:28 | 显示全部楼层
曾小妖 发表于 2017-3-16 17:00
该问题是否有解决方案?使用代理后,如何去掉代理服务器传给我们的图片?难道要手动处理?

不要用免费代理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-24 15:58:18 | 显示全部楼层

把代理服务器关了,不要使用代理,另外 下载图片时候 要有'http:'+each
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-11 14:07:18 | 显示全部楼层
现在煎蛋网的图片地址前面没有http:了,直接是\\...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-17 14:17:58 | 显示全部楼层
第12行是不是应该改为urlopen(req) ?
谁给解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-31 22:15:40 From FishC Mobile | 显示全部楼层
我再27行下面添加测试代码,print(b),输出的全是  -1,这是为什么,为什么找不到.jpg字符串呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-8 17:08:16 | 显示全部楼层
我想请问一下关于移位的问题,比如 代码中的+23 后面的a+9,b+4 这个移位是怎么得到的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 21:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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