鱼C论坛

 找回密码
 立即注册
查看: 2452|回复: 13

56课 爬虫:OOXX,一直报错403 新人帖 New

[复制链接]
发表于 2017-11-21 16:39:50 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 xiaozhitadie 于 2017-11-22 21:50 编辑

萌新一枚,最近在学习爬虫课程的时候一直报错403,代码完全按照小甲鱼的视频教程输入的,不知道为什么,也可能是自己输入错误问题。请大神指点!



无标题.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-11-21 16:40:32 | 显示全部楼层
  1. import urllib.request
  2. import os

  3. def url_open(url):
  4.     req = urllib.request.Request(url)
  5.     req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36')
  6.     response=urllib.request.urlopen(url)
  7.     html=response.read()



  8.             
  9. def get_page(url):
  10.     html=url_open(url).decode('utf-8')

  11.     a = html.find('current-comment-page')+23
  12.     b = html.find(']',a)
  13.     print(html[a:b])
  14.    

  15.    
  16. def find_imgs(url):
  17.     url_open(url).decode('utf-8')
  18.     img_addrs=[]

  19.     a = html.find('img src=')
  20.    

  21.     while a!=1:
  22.         b = html.find('.jpg',a,a+255)
  23.         if b!=-1:
  24.             img_addrs.append(html[a+9:b+4])
  25.         else :b=a+9

  26.         a=html.find('img src=',b)

  27.     for each in img_addrs:
  28.         print(each)
  29.    

  30. def save_img(folder,img_addrs):
  31.     for each in img_addrs:
  32.         filename=each.split('/')[-1]
  33.         with open(filename,'wb') as f:
  34.             img = url_open(each)
  35.             f.write(img)

  36. def download_mm(folder='OOXX',pages=10):
  37.     os.mkdir(folder)
  38.     os.chdir(folder)

  39.     url='http://jandan.net/ooxx/'
  40.     page_num=int(get_page(url))

  41.     for i in range(pages):
  42.         page_num -= i
  43.         page_url  = url+'page-'+str(page_num)+'#comments'
  44.         img_addrs = find_imgs(page_url)
  45.         save_imgs(folder,img_addrs)

  46. if __name__== '__main__':
  47.     download_mm()
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-21 19:07:06 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-11-22 09:37:18 | 显示全部楼层
虽然你没有给错误代码,但是我估计是
45行改为
img = url_open('http:' + each)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-22 09:37:30 | 显示全部楼层
注意第七行:urllib.request.urlopen(url), 是req吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-22 21:04:01 | 显示全部楼层
ooxx7788 发表于 2017-11-22 09:37
虽然你没有给错误代码,但是我估计是
45行改为
img = url_open('http:' + each)

并不是
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-22 21:27:50 | 显示全部楼层
purplenight 发表于 2017-11-22 09:37
注意第七行:urllib.request.urlopen(url), 是req吧。

不是的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-22 21:38:01 | 显示全部楼层

上错误代码啊,难道让我们肉眼debugger吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-22 21:48:47 | 显示全部楼层
ooxx7788 发表于 2017-11-22 21:38
上错误代码啊,难道让我们肉眼debugger吗

urllib.error.HTTPError: HTTP Error 403: Forbidden
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-22 23:28:46 | 显示全部楼层
xiaozhitadie 发表于 2017-11-22 21:48
urllib.error.HTTPError: HTTP Error 403: Forbidden

更网站封了。换个网站去爬吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-23 09:10:17 | 显示全部楼层
仔细瞧瞧吧
  1. >>> import urllib.request
  2. >>>
  3. >>> url = 'http://jandan.net/ooxx/'
  4. >>> req = urllib.request.Request(url)
  5. >>> req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36')
  6. >>>
  7. >>> response=urllib.request.urlopen(url)
  8. Traceback (most recent call last):
  9.   File "<pyshell#8>", line 1, in <module>
  10.     response=urllib.request.urlopen(url)
  11.   File "D:\Program Files\Python36\lib\urllib\request.py", line 223, in urlopen
  12.     return opener.open(url, data, timeout)
  13.   File "D:\Program Files\Python36\lib\urllib\request.py", line 532, in open
  14.     response = meth(req, response)
  15.   File "D:\Program Files\Python36\lib\urllib\request.py", line 642, in http_response
  16.     'http', request, response, code, msg, hdrs)
  17.   File "D:\Program Files\Python36\lib\urllib\request.py", line 570, in error
  18.     return self._call_chain(*args)
  19.   File "D:\Program Files\Python36\lib\urllib\request.py", line 504, in _call_chain
  20.     result = func(*args)
  21.   File "D:\Program Files\Python36\lib\urllib\request.py", line 650, in http_error_default
  22.     raise HTTPError(req.full_url, code, msg, hdrs, fp)
  23. urllib.error.HTTPError: HTTP Error 403: Forbidden
  24. >>>
  25. >>> response=urllib.request.urlopen(req)
  26. >>>
  27. >>> response.read()[:32]
  28. b'<!DOCTYPE html>\r\n<html dir="ltr"'
  29. >>>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-23 22:41:58 | 显示全部楼层
xxoo对网站图片地址进行了加密处理。如果只是学习,了解一下就差不多了。要不也可以换个网站测式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-30 22:00:36 | 显示全部楼层
ba21 发表于 2017-11-23 22:41
xxoo对网站图片地址进行了加密处理。如果只是学习,了解一下就差不多了。要不也可以换个网站测式

好的,谢谢,最近几天学习了一下才知道,找了几个简单的网址试了试成功了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-5 18:21:33 | 显示全部楼层
xiaozhitadie 发表于 2017-11-30 22:00
好的,谢谢,最近几天学习了一下才知道,找了几个简单的网址试了试成功了

有什么简单的网站推荐推荐呗~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-26 00:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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