鱼C论坛

 找回密码
 立即注册
查看: 5327|回复: 10

urllib.error.HTTPError: HTTP Error 403: Forbidden

[复制链接]
发表于 2015-7-21 16:52:41 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 flybeyondsky 于 2015-7-21 16:54 编辑
  1. import urllib.request
  2. import os

  3. def get_page(url):
  4.     req = urllib.request.Request(url)
  5.     req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36')
  6.     response = urllib.request.urlopen(url)
  7.     html=response.read().decode('utf-8')

  8.     a = html.find('current-comment-page') + 23
  9.     b = html.find(']',a)

  10.     print(html[a:b])


  11. def find_imgs(url):
  12.     pass

  13. def save_imgs(folder,img_addrs):
  14.     pass

  15. def download_mm(folder='OOXX',pages=10):
  16.     os.mkdir(folder)
  17.     os.chdir(folder)

  18.     url = "http://jandan.net/ooxx"
  19.     page_num = int(get_page(url))

  20.     for i in range(pages):
  21.         page_num -= i
  22.         page_url = url+'page-'+str(page_num)+'#comments'
  23.         img_addrs = find_imgs(page_url)
  24.         save_imgs(folder,img_addrs)

  25. if __name__ == '__main__':
  26.     download_mm()
复制代码

按照小甲鱼的一步一步来,找打印页面的时候 总是报错,urllib.error.HTTPError: HTTP Error 403: Forbidden!应该如何解决?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-7-21 20:25:43 | 显示全部楼层
  1. import urllib.request
  2. import os
  3. import random


  4. def url_open(url):
  5.     req = urllib.request.Request(url)
  6.     req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36')


  7.     proxies = ['163.177.79.5:80','124.65.163.10:8080','218.61.39.54:55366']
  8.     proxy = random.choice(proxies)
  9.    
  10.     proxy_support = urllib.request.ProxyHandler({'http':proxy})
  11.     opener = urllib.request.build_opener(proxy_support)
  12.     urllib.request.install_opener(opener)
  13.    
  14.     response = urllib.request.urlopen(url)
  15.     html=response.read()

  16.     return html

  17. def get_page(url):
  18.     html=url_open(url).decode('utf-8')

  19.     a = html.find('current-comment-page') + len('current-comment-page')+3
  20.     b = html.find(']',a)

  21.     return html[a:b]


  22. def find_imgs(url):
  23.     html = url_open(url).decode('utf-8')
  24.     img_addrs = []

  25.     a = html.find('img src=')
  26.     while a != -1:
  27.         b = html.find('.jpg',a,a+255)
  28.         if b != -1:
  29.             img_addrs.append(html[a+9:b+4])
  30.         else:
  31.             b = a + 9

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

  33.     return img_addrs


  34. def save_imgs(folder,img_addrs):
  35.     for each in img_addrs:
  36.         filename = each.split('/')[-1]
  37.         with open(filename,'wb') as f:
  38.             img=url_open(each)
  39.             f.wirte(img)
  40.    

  41. def download_mm(folder='OOXX',pages=10):
  42.     os.mkdir(folder)
  43.     os.chdir(folder)

  44.     url = "http://jandan.net/ooxx"
  45.     page_num = int(get_page(url))

  46.     for i in range(pages):
  47.         page_num -= i
  48.         page_url = url+'page-'+str(page_num)+'#comments'
  49.         img_addrs = find_imgs(page_url)
  50.         save_imgs(folder,img_addrs)

  51. if __name__ == '__main__':
  52.     download_mm()
复制代码


加入了代理也不可以哦~~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-21 21:26:09 | 显示全部楼层
本帖最后由 flybeyondsky 于 2015-7-21 21:27 编辑
  1. import urllib.request
  2. import os
  3. import random


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

  9.     return html

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

  12.     a = html.find('current-comment-page') + len('current-comment-page')+3
  13.     b = html.find(']',a)
  14.    
  15.     return html[a:b]


  16. def find_imgs(url):
  17.     html = 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:
  26.             b = a + 9

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

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


  30. def save_imgs(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.wirte(img)
  36.    

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

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

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

  48. if __name__ == '__main__':
  49.     download_mm()
复制代码



出现这样的错误:

http://jandan.net/ooxx/page-1471#comments
http://ww4.sinaimg.cn/mw600/006a7OZUgw1euanawdpncj30dw0dwdh6.jpg
http://ww4.sinaimg.cn/mw600/006a7OZUgw1euanaxrhwfj30dw0dw0u3.jpg
http://ww3.sinaimg.cn/mw600/006a7OZUgw1euanaze0r0j30dw0dw3zw.jpg
http://ww2.sinaimg.cn/mw600/0069EIYdgw1euacgpu1emj30go0m7n06.jpg
http://ww1.sinaimg.cn/mw600/0069EIYdgw1euacgre6sqj30go0m7tat.jpg
http://ww1.sinaimg.cn/mw600/0069EIYdgw1euacguk9ajj30go0m742w.jpg
http://ww4.sinaimg.cn/mw600/0069EIYdgw1euacgwx0x7j30go0m7n1r.jpg
http://ww2.sinaimg.cn/mw600/0069EIYdgw1euacgmiwcvj30go0p2tct.jpg
http://ww1.sinaimg.cn/mw600/8d07dee3tw1eopg9km062j20xc1b4dp7.jpg
http://ww2.sinaimg.cn/mw600/8d07dee3tw1eopg9mm50nj20gm0b7myb.jpg
http://ww1.sinaimg.cn/mw600/df43c939jw1euaixwqnktj20zk1eawqc.jpg
http://ww2.sinaimg.cn/mw600/df43c939jw1euabuk0grnj20f00mita6.jpg
"http://s.jandan.com/static/gggg/56fanli4/"+a+"\" width=\"125\" height=\"125\" border=\"0\" /></a>");

</script><!-- 56fanli -->

                                <script>

var str=new Array("1.jpg
"http://s.jandan.com/static/gggg/niuza/"+a+"\" width=\"125\" height=\"125\" border=\"0\" /></a>");

</script><!-- niuza -->

                                <script>

var str=new Array("1.jpg
Traceback (most recent call last):
  File "C:\Documents and Settings\Administrator\桌面\download_mm.py", line 65, in <module>
    download_mm()
  File "C:\Documents and Settings\Administrator\桌面\download_mm.py", line 62, in download_mm
    save_imgs(folder,img_addrs)
  File "C:\Documents and Settings\Administrator\桌面\download_mm.py", line 43, in save_imgs
    for each in img_addrs:
TypeError: 'NoneType' object is not iterable
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-28 08:06:25 | 显示全部楼层
tongyangdecuowu,buzhdiaowruhejiejue
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-28 11:46:01 | 显示全部楼层
听说是被禁止爬虫?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-20 23:43:26 | 显示全部楼层
报错是这个     for each in img_addrs:
TypeError: 'NoneType' object is not iterable

请问怎么解决?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-20 23:45:56 | 显示全部楼层
是如果列表为None 导致的TypeError: 'NoneType' object is not iterable么
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-30 19:02:38 | 显示全部楼层
urllib.error.HTTPError: HTTP Error 403: Forbidden 加入代理了 还是不可以 这个问题怎么解决呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-15 12:10:40 | 显示全部楼层
同样的问题  很无奈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-27 22:17:19 | 显示全部楼层
还是不行,求教/
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-18 16:41:14 | 显示全部楼层
不知道楼主解决了没
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 08:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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